私のセットアップ:
- 私のに接続されているwith
NSManagedObjectContext
型NSPrivateQueueConcurrencyType
NSPersistentStoreCoordinator
- プライベート コンテキストの子であるwith
NSManagedObjectContext
型。NSMainQueueConcurrencyType
- メイン コンテキストの子であるwith
NSManagedObjectContext
型。NSConfinementConcurrencyType
サーバーからデータをダウンロードするときに、 type のコンテキストにデータを書き込みますNSConfinementConcurrencyType
。次に、このコンテキストを保存します。これにより、変更がメイン コンテキストにプッシュされます。次に、変更をプライベート コンテキストにプッシュするメイン コンテキストを保存します。この時点でperformBlock
、プライベート コンテキストでメソッドを使用して、すべてを永続ストアに保存します。
これは、デバイスでデバッグするときに問題なく機能します。アプリケーションをアーカイブし、アプリケーションをリリース モードで実行すると、子コンテキストを正常に保存しても、メイン コンテキストは変更を受け取りません。再確認したところ、一時コンテキストは実際にメイン コンテキストにリンクされています (メイン コンテキストは一時コンテキストの親として表示されます)。しかし、一時コンテキストをリリース モードで保存すると、メイン コンテキストに変更が表示されることはありません。なぜこれがデバッグモードでは機能するのにリリースでは機能しないのか、私は困惑しています。
任意の提案/ヘルプをいただければ幸いです。
ありがとう、
グルーミング
編集:デバッグ構成を使用してビルドをアーカイブすると、すべてが期待どおりに機能します。したがって、リリース構成には異なる設定がいくつかあります。見つけたものをまた報告します。
編集 2: 犯人が見つかりました。そのため、保存コンテキストの呼び出しを NSAssert でラップしました (テスト中にエラーをキャッチできるようにするため)。残念ながら、Release 構成では、save 呼び出しを格納していたこれらのアサーション ブロックが取り除かれました。顔の手のひら