0

コードを変更してリリースしました。現在、永続ストアコーディネーターを新しいモデルに更新している間、アプリは起動時にタイムアウトになります。移行がトランザクションであるかどうかを知りたいので、修正するために何をすべきかを考え出すことができます。移行は、タイムアウトする前に移行によってx%になります。

トランザクションの場合は、最初にアプリを起動してから移行する必要があります。トランザクションでない場合、ユーザーは部分的にのみ移行されるスキーマを使用することになります。

バックグラウンド

呼び出しに使用されるコード

persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

予想どおり、データベースの新しいモデルが存在する場合は失敗します。以前は、ユーザーはを介してデータベースを更新するように求められていましたUIAlertView。次に、次のステートメントが呼び出されます。

[persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:optionsDictionary error:&error]

initWithManagedObjectModel失敗した場合は、コードの2行目を実行することにしました。このステートメントが`-(NSPersistentStoreCoordinator *)persistentStoreCoordinator'メソッド内で実行されることを除いて、それほど愚かではないため、アプリの起動時にタイムアウトになることがあります。

この段階ではどうしたらいいのかわかりません。データベースは新しいモデルに半分マッピングされますか、それとも以前のモデルを表しますか?

4

1 に答える 1

0

Core Dataの移行は、移行がメモリ内で行われ、完了すると古いデータベースがメモリ内の新しいバージョンに置き換えられるという点でトランザクションです。

そのため、起動中に移行しようとしていたタイムアウトの問題は、移行プロセスがdidFinishLaunchingWithOptionsメソッドから削除されたときに解決されました。新しいアップデートは、以前のアップグレードでタイムアウトした人の問題を修正しました。

于 2013-01-08T06:22:34.697 に答える