Potrzebuję pomocy w zrozumieniu KVO na złożonej hierarchii obiektów. Pozwól mi ustawić scenariusz. Obiekt MyClass ma zmienną właściwość tablicy, która zawiera obiekty MyPerson. Chcę obserwować zmiany we właściwości myPeople w MyClass. Ponadto chciałbym również obserwować wszystkie właściwości zawarte w obiekcie MyPerson. Oto definicje klas.Jak zaimplementować obserwowanie wartości kluczy w obiekcie NSMutableArray
@interface MyClass:NSObject
{
NSMutableArray *myPeople;
}
@property(nonatomic, retain)NSMutableArray *myArray;
@end
Oto przedmiot MyPerson,
@interface MyPerson:NSObject
{
NSString *myName;
NSString *myLastName;
}
@property(nonatomic, retain)NSString *myName;
@property(nonatomic, retain)NSString *myLastName;
@end
Czy to prawidłowe obserwować właściwości, które mnie interesuje w następujący sposób?
MyClass *myClass = [[MyClass alloc] init]; //myPeople is filled with myPerson objects
MySchool *mySchool = [[MySchool alloc] init];
[myClass addObserver:mySchool
forKeyPath:@"myPeople"
options:NSKeyValueObservingOptionNew
context:NULL];
[myClass addObserver:mySchool
forKeyPath:@"myPeople.myName"
options:NSKeyValueObservingOptionNew
context:NULL]; //I am unsure about this one
[myClass addObserver:mySchool
forKeyPath:@"myPeople.myLastName"
options:NSKeyValueObservingOptionNew
context:NULL]; //I am unsure about this one
Dzięki za szybką odpowiedź. Co jeśli obiektami w tablicy były słowniki (NSDictionary). Czy ta metoda zadziała? – David
Nic nie zmieniłoby. Możesz określić 'NSKeyValueChangeInsertion',' NSKeyValueChangeRemoval' lub 'NSKeyValueChangeReplacement' na swoim tablecie, aby otrzymywać powiadomienia o zmianach w samej tablicy, ale nie ma możliwości automatycznego powiadomienia o zmianach w zawartości tablicy. –
Dzięki, rozumiem teraz. – David