1

その後、いくつかの処理を行って軽量の移行をアーカイブしようとしています。私はすでに軽量プロセスを行っており、エンティティを処理するための助けが必要です。

古いモデルでは、以前は「車」というエンティティがありましたが、現在は「人が車を持っている」という関係を持つエンティティ「人」を追加しました。

したがって、軽量の移行後、デフォルトの人「ジョン」を追加し、すべての車を彼に追加する必要があります。

誰にもアイデアはありますか?

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
    }

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreData.sqlite"];

    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

    NSDictionary *options = @{
                              NSMigratePersistentStoresAutomaticallyOption : @YES,
                              NSInferMappingModelAutomaticallyOption : @YES
                              };


    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }

    return _persistentStoreCoordinator;
}
4

2 に答える 2

0

これがデータベースへの 1 回限りのアップグレードである場合は、軽量の移行ではなく、カスタムの移行ポリシー クラスを使用する方が理にかなっています。そのプロセスをカスタマイズするための素晴らしいチュートリアルがあります: http://9elements.com/io/index.php/customizing-core-data-migrations/

モデルの 1 つのペアからの推論された移行と、別のモデルのペア間のカスタム移行を混在させたい場合は、関連する Core Data メソッドの説明と反復移行クラスのサンプルを書きました。

于 2013-07-23T21:43:47.890 に答える