コア データ データベースには、保存する直前に更新する必要がある計算値がいくつかあります。基本的に、エンティティ間のナビゲーションを容易にするために、いくつかのエンティティに番号を付けています。
現在、私はNSManagedObjectContextWillSaveNotification
そこでこの番号付けを観察し、実行しようとしています。私が行った変更は保存されているように見えますが、元に戻すマネージャーにはまだいくつかの変更が加えられているようです。これにより、管理対象オブジェクトのコンテキストでは ( ) がないことが示されていても、ドキュメントが変更されたように見えます (閉じるボタンにマークを付けますhasChanges
)。一度元に戻すと、ドキュメントは変更されていないように見えますが、管理対象オブジェクトのコンテキストは変更されています。
元に戻すマネージャーが何らかの形で間違った場所にリセットされたのでしょうか、それとも私が何か間違ったことをしているのでしょうか?
アップデート
この再番号付けを行っているやや難読化されたコードは次のようになります。
- (void)managedObjectContextWillSave:(NSNotification *)notification
{
// Force the content view controller to save any pending changes.
[_contentViewController saveChanges];
NSArray *itemSortDesc = [self sortDescriptorsForSomeItem];
NSArray *items = [SomeItem findAllObjectsInContext:self.managedObjectContext
andSortBy:itemSortDesc];
NSUInteger i = 0;
for (SomeItem *i in items)
{
i.uid = [NSNumber numberWithUnsignedInteger:i++];
}
}
には、の_contentViewController
複数のインスタンスに解析されるテキスト フィールドが含まれていますSomeItem
。