Xcode3には何の問題もありませんでしたが、「永続的なストアの移行に失敗し、ソースマネージドオブジェクトモデルがありません」というコアデータモデルを更新すると、Xcode4でAppleのコードが3回に1回失敗します。エラー。Xcode4のモデルを壊さずに正しく更新するにはどうすればよいですか?
ここに私のセットアップ(私は自動移行するには、プロジェクトの設定方法)です:
- NSPersistentDocument、Appleのテンプレート
- 上書きAppleのモデルローディング方式から、と私は唯一のものは、提供することです
-(BOOL)configurePersistentStoreCoordinatorForURL:(NSURL *)url ofType:(NSString *)fileType modelConfiguration:(NSString *)configuration storeOptions:(NSDictionary *)storeOptions error:(NSError **)error
{
NSMutableDictionary *newOptions = nil;
if(storeOptions != nil)
newOptions = [NSMutableDictionary dictionaryWithDictionary:storeOptions];
else
newOptions = [NSMutableDictionary dictionary];
[newOptions setValue:@"YES" forKey:NSMigratePersistentStoresAutomaticallyOption];
[newOptions setValue:@"TRUE" forKey:NSInferMappingModelAutomaticallyOption];
BOOL success = FALSE;
success = [super configurePersistentStoreCoordinatorForURL:url ofType:fileType modelConfiguration:configuration storeOptions:newOptions error:error];
return success;
}
自動移行をオンにstoreOptions辞書に2つのフラグは、ここで私は、プロセスの(すでにXcode4で約1バグを作業している!)を使用して」VEの
- が
- 移動エディタのメニューに(左に曲がりくねって、Xcode4に 『something.xcdatamodel』という名前の)モデルを選択し、 [新しいモデルのバージョンを追加...]を選択します。
- 名前の最後に1より大きい整数を指定します。選択し、任意のファイルを選択します。以前は、「4」は、新しいものが右側のペインで「5」
- 、XCode4バグのための新しく作成された1つの
- の回避策を現在のモデルのバージョンを変更する名前だった場合新しく作成されたモデルそうでない場合、Xcodeは新しく作成されたモデルの選択を表示しますが、代わりに以前のモデルを編集するため、CoreDataのすべてが完全に破損します。
- モデルを編集します。この場合、既存のエンティティに新しい属性を追加します。
- 保存します。ビルド。実行します。 ...クラッシュ。
私が言ったように、3の約2倍が正しく機能します。軽量移行が完了したら、次回のセーブで新しいモデルバージョンが保存されます(一度動作すれば、明らかに問題ありません)。
私は上記の手順で間違っていることを推測していますが、私はドキュメントを5〜6回読んできましたが、何も明らかではありません。 NSPersistentDocumentドキュメントが古くなっているのを助けませんが、私はiPhoneでたくさんの軽量マイグレーションを行っています。だから私はこれを行うことに合理的に自信を持っています。
他のものは、私がチェック/試してみた: - iPhone Core Data Lightweight Migration Cocoa error 134130: Can't find model for source store(いや、唯一のルートxcdatamodelが含まれていた)
クラッシュでエラーが発生しますか? – TechZen
開発ビルドを移行しようとしていますか? – TechZen
店舗の同じコピーを何度も繰り返し使用しているのですか、毎回新しいコピーを開始していますか? – TechZen