0

NSManagedObject 中的 isUpdated 方法会通知我实体是否已更新。

但是,如果与实体有关系的实体已更新,它不会通知我。

我应该自己经历所有的关系吗?

谢谢

4

1 回答 1

1

需要考虑的几种方法是...观察上下文以查看是否有任何对象已更改,使用一些键路径运算符来深入了解细节...这种方法可能容易出错且很麻烦...

更好的方法是发出特殊通知并在该通知中发送适当的信息......然后观察者只需观察该通知,而不是 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
于 2012-06-08T12:13:41.533 回答