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