ページ

2008年1月3日木曜日

CoreDataでパッケージ保存

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

画像などのデータを取り扱う場合、CoreDataの保存ファイルとは別に画像ファイルそのままで保存して全体を1つのパッケージとしてまとめたい。ところが、info.plistにはパッケージのオプション(LSTypeIsPackage)はあるものの NSPersistentDocumentではこれは使えない。どうしたものかと Googleで情報を集めたところ方法が見つかった。

(1) Core Data Document-based Applicationでファイルパッケージを扱う
狙いは良いのだが残念なことに肝心の保存・読み込み部分が完成していない。


(2) Using NSPersistentDocument o save and open packages

- (BOOL)configurePersistentStoreCoordinatorForURL:(NSURL *)url ofType:(NSString *)fileType error:(NSError **)error
をオーバーライドする方法が記載されていた。が、保存時にエラーが出てうまく動かなかった(10.5にて)。


(3) Packages and Core Data documents

Ruby-cocoaによる実装例になるが同等のコードをobjective-c で書いたところ、こちらはうまくいった。

サンプル:sample20080103-2.zip

Test という名前で保存するとパッケージが作成され、その中に data.xmlという CoreDataによって作成されたデータファイルが保存される。読み込みも Test の指定で行える。