[NSManagedObject changedValuesForCurrentEvent] は古い値を返します。誰もこの問題に直面しましたか?
ドキュメントは次のように述べています。
NSManagedObjectContextObjectsDidChangeNotification の最後の投稿以降に変更された永続プロパティのキーと (新しい) 値を含む辞書を返します。
しかし、実際には古い値を返します。
[NSManagedObject changedValuesForCurrentEvent] は古い値を返します。誰もこの問題に直面しましたか?
ドキュメントは次のように述べています。
NSManagedObjectContextObjectsDidChangeNotification の最後の投稿以降に変更された永続プロパティのキーと (新しい) 値を含む辞書を返します。
しかし、実際には古い値を返します。
に返信するときにこれを見ましたNSManagedObjectContextObjectsDidChangeNotification
。NSManagedObjectContext
これが他の通知と一致しているかどうかはわかりません。回避策として、キーを使用して、次の方法で管理対象オブジェクト自体から新しい値を取得します。
NSDictionary *changedProperties = [managedObject changedValuesForCurrentEvent];
for(NSString *key in changedProperties) {
NSObject *newValue = [managedObject performeSelector:NSSelectorFromString(key)];
}
反対に、(特定の状況では) を使用して保存操作を行う前に、オブジェクトのフォールトを解除して現在/古い値を取得する必要があることがわかりました[managedObjectContext refreshObj:managedObject mergeChanges:NO]
。私の場合、削除されたオブジェクトの関係をトラバースする必要がありました。しかし、間もなく削除されるオブジェクトの関係は、すでに無効になっています。オブジェクトを更新すると、これが解決しました。
お役に立てれば。