3

[NSManagedObject changedValuesForCurrentEvent] は古い値を返します。誰もこの問題に直面しましたか?

ドキュメントは次のように述べています。

NSManagedObjectContextObjectsDidChangeNotification の最後の投稿以降に変更された永続プロパティのキーと (新しい) 値を含む辞書を返します。

しかし、実際には古い値を返します。

4

1 に答える 1

0

に返信するときにこれを見ましたNSManagedObjectContextObjectsDidChangeNotificationNSManagedObjectContextこれが他の通知と一致しているかどうかはわかりません。回避策として、キーを使用して、次の方法で管理対象オブジェクト自体から新しい値を取得します。

NSDictionary *changedProperties = [managedObject changedValuesForCurrentEvent];
for(NSString *key in changedProperties) {
    NSObject *newValue = [managedObject performeSelector:NSSelectorFromString(key)];
}

反対に、(特定の状況では) を使用して保存操作を行う前に、オブジェクトのフォールトを解除して現在/古い値を取得する必要があることがわかりました[managedObjectContext refreshObj:managedObject mergeChanges:NO]。私の場合、削除されたオブジェクトの関係をトラバースする必要がありました。しかし、間もなく削除されるオブジェクトの関係は、すでに無効になっています。オブジェクトを更新すると、これが解決しました。

お役に立てれば。

于 2013-04-17T21:48:16.430 に答える