2

UIManagedDocument を使用してエンティティを保存する際に問題が発生しています。UIManagedDocuments コンテキストとしてコンテキストが設定された NSFetchedResultsController があります。コントローラーにセクションを設定しました。ユーザーが UIManagedDocuments コンテキストにエントリを追加し、[context save:&error]; を使用してコンテキストを保存します。私の NSFetchedResultsController は適切に更新されます。

NSFetchedResultsController を持つビューを離れてから、同じ UIManagedDocuments コンテキストで新しい NSFetchedResultsController を作成するビューに戻ると、[fetchedResultsController performFetch:&error]; を呼び出すとエラーが返されます。

エラーは言う:

CoreData: エラー: (NSFetchedResultsController) インデックスでフェッチされたオブジェクトのセクション名が正しくありません。オブジェクトはセクション名でソートする必要があります'

フェッチは失敗します。

ビューに戻る前にしばらく待っても、エラーは発生しません。子コンテキストで保存操作が行われ、変更が親コンテキストにプッシュされることはわかっていますが、これは問題と関係があると思います。誰にも解決策がありますか?

4

1 に答える 1

2

UIManagedDocument Reference によると、NSManagedObjectContext 経由で保存しないでください。保存は、適切な UIManagedDocument API を介して行う必要があります。残念ながら、このドキュメントでは、何を使用すべきかが明確ではありません。

元に戻すマネージャーを使用する場合、そのパスは、すべてが適切にダーティとしてマークされ、保存されていることを確認することになっています。同様に、への明示的な呼び出しを使用して

[document updateChangeCount:UIDocumentChangeDone];

同様の機能を提供するはずです。ただし、別スレッドで行うため保存は後回しになります。

于 2012-04-10T16:59:46.427 に答える