1

コア データの軽量移行に問題があります。モデルの最初のバージョンのアプリケーションが AppStore に提出されました。次に、バージョン 2 のデータ モデルがありました (提出されませんでした)。最後に、いくつかの変更を加えた後、バージョン 3 のモデルを追加し、AppStore に提出しました。

移行は段階的に行われたため (v1 - v2 - v3)、テスト デバイスですべてがうまく機能しました。

ただし、バージョン 1 から 3 に移行しようとしている (バージョン 2 をスキップする) など、AppStore からアプリケーションを更新したユーザーには機能しません。

どうすればこの問題を解決できますか? ありがとう。

4

2 に答える 2

0

これは力ずくの解決策ですが、ストアを削除することで問題を解決できます。

// Setup CoreData with MagicalRecord && remove CoreData store
// The flag is used to perform the delete just once
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"CORE_DATA_FLAG01"]) {
    NSURL *storeURL =[NSPersistentStore MR_urlForStoreName:@"YourStore.sqlite"];
    LOG(@"%@", storeURL);
    NSFileManager *fm = [[NSFileManager alloc] init];
    NSError *error = nil;
    [fm removeItemAtURL:storeURL error:&error];
    if (error) {
        LOG(@"error %@", error);
    } else {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"CORE_DATA_FLAG01"];
    }
}

CoreDataとやり取りするためにMagicalRecord を使用しています。この場合、関数を使用してストアを取得します。

于 2013-07-08T12:57:59.793 に答える
0

軽量の移行では、V1->V2 が機能し、V2->V3 が機能する場合、V1->V3 から直接移動しても問題はないはずです-何かを台無しにしない限り。:)

V1 バージョンを起動してから V3 に切り替え、ステップスルーして問題をデバッグします。

NSDictionary *options = @{
                          NSMigratePersistentStoresAutomaticallyOption: @YES,
                          NSInferMappingModelAutomaticallyOption: @YES
                         };
NSError *error;
NSPersistentStore *persistentStore = [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error];
if (!persistentStore) {
    NSLog(@"migration failed: %@", error);
}
于 2016-10-05T08:15:50.807 に答える