2

NSFetchedResultsControllerによってフィードされるUITableViewControllerがあります。そこから、ユーザーは新しいデータを入力できるモーダルViewControllerを呼び出すことができます。これが始まると、次のように一時オブジェクトを作成します。

newPtr = [[Entry alloc] initWithEntity:[NSEntityDescription
entityForName:@"Entry" inManagedObjectContext:self.nmocontext]
insertIntoManagedObjectContext:self.nmocontext];

ユーザーが選択すると、この「暫定的な」オブジェクトであるnewPtrの属性が設定されます。

問題は、モーダルViewControllerが表示されている間、ベースUITableViewControllerがアクティブのままであるということです。newPtrの必須属性がまだ設定されていないことに気付いた場合、(クラッシュを引き起こして)おかしくなりそうです。

モーダルViewControllerが閉じられるまで、NSFetchedResultsControllerが管理対象オブジェクトコンテキストを参照しないようにするにはどうすればよいですか?

4

2 に答える 2

2

Core Dataは、「ネストされた」管理対象オブジェクトコンテキストをサポートします。これにより、独立したキャンセル可能な変更セットを簡単にサポートできる柔軟なアーキテクチャが可能になります。子コンテキストを使用すると、ユーザーが管理対象オブジェクトに一連の変更を加えて、単一のトランザクションとして親に一括でコミットする(最終的にはストアに保存する)か、破棄することができます。アプリケーションのすべての部分が、たとえばアプリケーションデリゲートから同じコンテキストを取得するだけの場合、この動作をサポートすることは困難または不可能になります。

于 2016-10-17T00:22:37.077 に答える
1

私はこれを自分でテストしていませんが、可能なアプローチはとを実装viewWillAppearviewWillDisappear、fetchedResultsControllerデリゲートをselfonに設定すると、onが表示され、nilonが消えます。

また

編集ウィンドウでNSManagedObjectの属性をミラーリングするNSObjectを作成できます。ユーザーが属性の編集を終了したら(そして適切な検証ルールを実行したら)、それらをNSManagedObjectインスタンスに戻し、fetchedResultsControllerにその仕事を任せることができます。

于 2010-12-12T07:19:52.937 に答える