UIManagedDocumentは、アトミックストアではなくパッケージ(フォルダー)を作成します。店はまだそこにありますが、パッケージに埋もれています。シミュレーターのDocumentsフォルダーに作成されたファイルを右クリックすると、構造を確認できます。デフォルトは
mydocument.foo
-> StoreContent
-> persistentStore
あなたがする必要があるのはあなたのアプリファイルタイプのための新しい拡張子を作成することです、それで例えばあなたのデータベース拡張子が .myappdb
あなたであるならばあなたはあなたのプロジェクト設定で新しいドキュメントタイプを作成する必要があります.myappdbw
。のエントリからすべての設定をコピーできます.myappdb
mydocumenturl
次に、永続ストアコーディネーターに渡す代わりに、でレガシードキュメントを開く処理を行う時点で、上記のディレクトリ構造を作成します。
NSURL *newurl = [[mydocumenturl URLByDeletingPathExtension] URLByAppendingPathExtension:@"myappdbw"];
NSURL *desturl = [newurl URLByAppendingPathComponent:@"StoreContent"];
[[NSFileManager defaultManager] createDirectoryAtURL:desturl withIntermediateDirectories:YES attributes:nil error:NULL];
NSURL *finalurl = [desturl URLByAppendingPathComponent:@"persistentStore"];
次に、レガシーデータベースを作成したフォルダシステムに移動します
[[NSFileManager defaultManager] moveItemAtURL:mydocumenturl toURL:finalurl error:NULL];
次に、バンドルURLをUIManagedDocumentに渡すことができます
UIManagedDocument *doc = [[UIManagedDocument alloc] initWithFileURL:newurl];
iCloud統合に役立つリンクは次のとおりです。
http://developer.apple.com/library/ios/#releasenotes/DataManagement/RN-iCloudCoreData/_index.html
約束されたサンプルコードのほとんどがこれまでに表示されていないため、そのすべては少し不思議ですが、一方で、ほとんどの場合、推測するのはかなり簡単です。その他のヒントについては、WWDC2011セッション107、116、および315を参照してください。
ただし、レガシードキュメントの移行にこの方法を使用する場合は、移行NSPersistentStoreUbiquitousContentNameKey
時にパッケージが変更されるため、移行する時点を設定しないでください。上記のドキュメントはそれを非常によく説明しています。