Ho bisogno di aiuto per cercare di capire KVO su una gerarchia di oggetti complessa. Lasciami impostare lo scenario. L'oggetto MyClass ha una proprietà di matrice mutabile che contiene oggetti MyPerson. Voglio osservare i cambiamenti nella proprietà myPeople di MyClass. Inoltre vorrei osservare tutte le proprietà contenute nell'oggetto MyPerson. Ecco le definizioni di classe.Come implementare l'osservazione dei valori chiave degli oggetti in un NSMutableArray
@interface MyClass:NSObject
{
NSMutableArray *myPeople;
}
@property(nonatomic, retain)NSMutableArray *myArray;
@end
Ecco l'oggetto myPerson,
@interface MyPerson:NSObject
{
NSString *myName;
NSString *myLastName;
}
@property(nonatomic, retain)NSString *myName;
@property(nonatomic, retain)NSString *myLastName;
@end
è corretto osservare le proprietà che mi interessano nel seguente modo?
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
Grazie per la rapida risposta. Cosa succede se gli oggetti nell'array erano dizionari (NSDictionary). Questo metodo funzionerebbe? – David
Non cambierebbe nulla. È possibile specificare "NSKeyValueChangeInsertion", "NSKeyValueChangeRemoval" o "NSKeyValueChangeReplacement" sul proprio osservatore di array per essere notificati delle modifiche alla matrice stessa, ma non c'è modo di essere avvisati automaticamente delle modifiche ai contenuti dell'array. –
Grazie capisco ora. – David