4

UIManagedDocumentのサブクラスを使用し、そのドキュメントをiCloudに保存するiPhoneアプリに取り組んでいます。

コアデータモデル/スキームを変更するまで(過去数週間に数回あったように、新しいモデルバージョンを追加するまで)、すべて正常に機能していました。新しいプロパティを追加し、既存のプロパティの1つのデータ型を変更しました。

UIManagedDocumentアプリを実行すると、 'sを使用してドキュメントを読み込めないようです-openWithCompletionHandler:。新しいドキュメントを作成して、それらを読み書きできます。データモデルのバージョンを1に戻すと、既存のドキュメントを読むことはできますが、新しいドキュメントを読むことはできません。

私が理解していることから、私はデータモデルへの軽量の移行のみを行っており、UIManagedDocumentそれを正しく処理することになっていますか?

アドバイスをいただければ幸いです。

4

2 に答える 2

7

以下は私の理解に基づいています。

注 - iCloud では試していませんが、iCloud 以外でテストしたところ問題ないようです。

UIManagedDocumentmanagedObjectModelおよび Persistent Store Coordinator を単独で構成します

移行を行う必要がある場合は、 を設定するだけUIManagedDocumentですpersistentStoreOptions

//Note - In this example, managedDocument is a UIManagedDocument property

self.managedDocument.persistentStoreOptions = [NSDictionary dictionaryWithObjectsAndKeys:
                                        [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                                        [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

参照:

于 2012-11-20T15:41:00.130 に答える
2

UIManagedDocumentのサブクラスでは、次のようにmanagedObjectModelをオーバーライドしてみてください。

- (NSManagedObjectModel *)managedObjectModel
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"<ModelNameHere>" ofType:@"momd"];
    NSURL *momURL = [NSURL fileURLWithPath:path];
    NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];

    return managedObjectModel;
}
于 2011-12-30T07:41:12.483 に答える