Какао связывание между 2 свойствами в разных классах - PullRequest
2 голосов
/ 14 октября 2011

Я изучаю какао около 2 недель, в настоящее время я пытаюсь понять привязки, могу ли я связать 2 свойства, не относящиеся к пользовательскому интерфейсу?

Я пытался связать их программно, но не могу заставить его работать.

[ClassA bind: @"property1"
       toObject: ClassB // <--------Error here 
    withKeyPath:@"propert2"
        options:bindingOptions];

Я думаю, что все может быть неправильно, любая помощь или направление будут оценены.

Спасибо заранее,

С уважением, Теренс

1 Ответ

2 голосов
/ 16 октября 2011

Да - вполне допустимо связывать произвольное свойство с другим свойством.Это часто полезно для автоматического обновления пользовательского интерфейса, поэтому многие примеры Apple демонстрируют свойства элементов пользовательского интерфейса.Но привязки никак не ограничиваются объектами пользовательского интерфейса.Ниже приведен конкретный пример:

//
//  AppDelegate.m
//  StackOverflow
//
//  Created by Stephen Poletto on 10/15/11.
//

#import "AppDelegate.h"

@interface ClassA : NSObject {
    NSString *propertyA;
}

@property (copy) NSString *propertyA;

@end

@interface ClassB : NSObject {
    NSString *propertyB;
}

@property (copy) NSString *propertyB;

@end

@implementation ClassA
@synthesize propertyA;
@end

@implementation ClassB
@synthesize propertyB;
@end

@implementation AppDelegate

@synthesize window = _window;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    ClassA *a = [[ClassA alloc] init];
    ClassB *b = [[ClassB alloc] init];

    [a bind:@"propertyA" toObject:b withKeyPath:@"propertyB" options:nil];

    // Now that the binding has been established, if propertyB is set on 'b',
    // propertyA will automatically be updated to have the same value.
    [b setPropertyB:@"My Message"];
    NSLog(@"A's propertyA: %@", [a propertyA]); // Prints 'MyMessage'. Success!
}

@end

Обратите внимание, что bind: вызывается для экземпляра класса, а не для самого класса.Если вы новичок в Какао, вы должны знать, что привязки являются одним из наиболее сложных понятий, и вы должны убедиться, что вы понимаете KVC и KVO перед их использованием.

...