にNSOperationQueue
セットしていNSOperationQueueDefaultMaxConcurrentOperationCount
ます。それはオブジェクトで満たされていNSOperation
ます(これまでのところ奇妙なことは何もありません). をサブクラス化しNSOperation
て、いくつかのバックグラウンド タスクを実行しました。
- インターネットからデータをダウンロードします。
- データを解析して、読み取れるようにします。
NSManagedObject を作成します。
[NSEntityDescription insertNewObjectForEntityForName:@"Channel" inManagedObjectContext:context];
コンテキストで保存します。
[managedObjectContext 保存:&エラー]
UI がブロックされないように、これがすべてバックグラウンドで行われるのが好きです。コアデータとの並行性に関するこの記事を読み、理解した限り. NSManagedObjectContext
最善の方法は、すべての に新しい を作成することですNSOperation
が、同じ永続ストア コーディネーターを共有します。
これは簡単に実行できますが、ドキュメントに記載されているコンテキストの保存に関しては、そうするとエラーが発生しやすくなります。だから私の質問は次のとおりです。
NSOperationQueue で別の操作を実行している場合、管理対象オブジェクトのコンテキストを保存する際に、それらの操作が互いに干渉する可能性はありますか? それとも、保存が完了するまで次の操作を実行するのを待ちますか?
コンテキストを NSOperation に安全に保存できますか? それとも本当に悪い習慣ですか?
私は今本当に立ち往生しているので、誰かがこの問題に光を当ててくれることを願っています.