2016-07-02 18 views
2

JSONを取得してコアデータ内に格納する単純なアプリケーションを構築しました。シミュレータやデバイス上で初期時にCoreData:error:管理対象オブジェクトがコンテキストから削除された後の管理対象オブジェクトの変更

をインストールし、すべてのコアデータ操作が細かいですが、再実行時に、私は次のエラーメッセージ(複数可)を取得:

2016-07-02 13:23:53.925 En Yakın[84775:5379467] CoreData: error: Mutating a managed object 0x79736290 <x-coredata:///Category/t4B10F995-A717-4DB8-9E87-8A1C079D45D42> (0x79736250) after it has been removed from its context. 

を何も悪いことは、視覚的にありません。すべてのデータが期待どおりに表示され、アプリが機能します。

私は問題をデバッグしました。私がJSON検索関数をコメントアウトして、最初の実行後にCore Dataの中にあるものをアプリケーションに使用させると、エラーメッセージは表示されません。しかし、再びアプリケーションを取得すると、私のコアデータスタック(シングルトンオブジェクトとして実装されている)との間違った通信が行われます。

Core Dataの実装を変更するにはどうすればよいですか?

更新

私はそれのコアに問題を追跡すると信じています。ダウンロードした約6 KBのサムネイル画像を保存しています。画像を保存するとCore Dataにパフォーマンスが低下することが分かりました。しかし、このサイズのサムネイルも問題になりますか?エンティティへのイメージの割り当てを削除すると、エラーは消えます。私はそれらをファイル構造の中に保存すべきでしょうか?

+0

JSONの処理中に関係を切断すると思いますが、削除ルールで何かが削除されていて、UIを完全に更新しないのですか? – Wain

+0

@Wain質問の更新をご覧ください –

答えて

2

エラーが興味深い:

<x-coredata:///Category/t4B10F995-A717-4DB8-9E87-8A1C079D45D42>

注GUIDの前に小文字t。つまり、このオブジェクトは新しいものであり、保存されていません。したがって、各使用後に保存されていない管理オブジェクトのコンテキストを放棄しない限り、完全に有効な戦略では、状態の不一致が発生します。

問題を簡単に解決するには、saveをさらに発行するか、新しいフェッチの前に捨てる子コンテキストで操作します。

+0

質問の更新をご覧ください –

関連する問題