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 に答える