7
内のオブジェクトの観察のキー値を実装するためにどのように私は、オブジェクトの複雑な階層にKVOを理解しようといくつかの助けを必要としています。シナリオを設定しましょう。 MyClassオブジェクトには、MyPersonオブジェクトを含む変更可能な配列プロパティがあります。私はMyClassのmyPeopleプロパティの変更を観察したい。さらに、MyPersonオブジェクトに含まれるすべてのプロパティも監視したいと考えています。ここにクラス定義があります。ここでNSMutableArrayの
@interface MyClass:NSObject
{
NSMutableArray *myPeople;
}
@property(nonatomic, retain)NSMutableArray *myArray;
@end
がMyPersonオブジェクトである、
@interface MyPerson:NSObject
{
NSString *myName;
NSString *myLastName;
}
@property(nonatomic, retain)NSString *myName;
@property(nonatomic, retain)NSString *myLastName;
@end
は、私は次のように興味の性質を観察することが正しいですか?
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
クイック返信ありがとうございます。配列内のオブジェクトが辞書(NSDictionary)の場合はどうなりますか?その方法は使えますか? – David
それは何も変わらないでしょう。配列オブザーバにNSKeyValueChangeInsertion'、 'NSKeyValueChangeRemoval'、またはNSKeyValueChangeReplacement'を指定して、配列自体の変更を通知することはできますが、配列の内容の変更を自動的に通知する方法はありません。 –
ありがとう、私は今理解しています。 – David