是否存在类似于isUpdated的方法,如果NSManagedObject的关系已更新,它会通知我?

时间:2012-06-08 07:40:41

标签: objective-c cocoa core-data

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

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

我应该自己完成所有关系吗?

由于

1 个答案:

答案 0 :(得分: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