Cocoaの日々: BlogAssistant(10) CoreData - 複数のプロセスから CoreDataを扱う 〜 NSManagedObjectのリロード
前回は1つの CoreData DB(SQLite)を複数のプロセスからアクセスする際に、NSManagedObjectContextを作り直して表示更新を行うことを試みた。
その後いろいろ考えたが、やはり正規の方法から外れるのは今後何かと問題になりそうなので、CoreData DB を操作するのは基本一つのプロセスに限定することにした。ただ IPCやその他の実装を使った同期式のクライアント=サーバモデルは、大げさすぎるし運用もしづらい。そこで簡単な非同期式の連携方法である Queueモデルを採用することにした。
こうすることで CoreData DB(SQLite)へのアクセスを一元化できる。非同期なのでリアルタイムではなくなるがファイルがよほど溜まらない限りはそんなに遅延は発生しないだろう。また Queueといっても特別な仕組みを作るのではなく、特定のフォルダを用意してそこでファイルをやりとりするだけ(このフォルダが簡易 Queueの役割を果たす)。FSEventを使えば効率的に監視ができる。
- - -
まずは監視の部分は置いておいて、ファイルのやりとり部分から実装をやって行く事にする。ファイルは取り扱いが容易な plistを使うことにする。
(続く)