NSManagedObject 中的 isUpdated 方法会通知我实体是否已更新。
但是,如果与实体有关系的实体已更新,它不会通知我。
我应该自己经历所有的关系吗?
谢谢
NSManagedObject 中的 isUpdated 方法会通知我实体是否已更新。
但是,如果与实体有关系的实体已更新,它不会通知我。
我应该自己经历所有的关系吗?
谢谢
需要考虑的几种方法是...观察上下文以查看是否有任何对象已更改,使用一些键路径运算符来深入了解细节...这种方法可能容易出错且很麻烦...
更好的方法是发出特殊通知并在该通知中发送适当的信息......然后观察者只需观察该通知,而不是 kvo 所有的键。
也许是这样的:
static NSString * kClassADidChangeKey = @"kClassADidChangeKey";
static NSString * kClassAKeyKey = @"kClassAKeyKey";
@interface ClassA : NSManagedObject
@property (nonatomic,copy) NSString * keyOfInterest;
@end
@implementation ClassA
@dynamic keyOfInterest;
-(void)setKeyOfInterest:(NSString*)theValue
{
[self willChangeValueForKey:@"keyOfInterest"];
NSMutableDictionary * userInfo = [NSMutableDictionary dictionary];
[userInfo setValue:key forKey:kClassAKeyKey];
[[NSNotificationCenter defaultCenter] postNotificationName:kClassADidChangeKey object:self userInfo:userInfo];
[self setPrimitiveValue:theValue forKey:@"keyOfInterest"];
[self didChangeValueForKey:@"keyOfInterest"];
}
@end