複数のスレッドで単一の MOC を使用すると、すべての結果に悩まされます。MOC はメイン スレッドで作成され、それを使用して別のスレッドで DB を埋めるため、ランダムなポイントでアプリがクラッシュします。コードはグローバル シングルトンを使用して同期 (@synchronize) されますが、アプリがクラッシュします。スレッドごとに個別のMOCを使用すると問題が解決することを読みましたが、スレッド間でNSManagedObjectsを共有することも悪いアプローチと見なされていることを読みました。
私の使用例は次のとおりです。1) サーバーから XML をロードして解析し、解析中に新しい NSManagedObject をデータベースに挿入します。これはすべて別のスレッドで行われます。2) メインスレッドから、ユーザーはデータベースからデータを読み取る UI と対話します。
両方のスレッドで、NSManagedObjects を使用します。これを修正する方法を教えてください。もう何度も失敗しました。
ほとんどの場合、アプリはエラーでクラッシュし、コレクションを列挙中に変更していることを示唆していますが、これはコードが同期されているため正しくありません。反復している間は変更が行われず、その逆も同様です。変更している間は反復しません。完了したら保存します。