> Did you create a mapping model? > If not, did you specify the NSInferMappingModelAutomaticallyOption option?
Yes, I did create one. But I think that the problem is not there, since not knowing the source model, Core Data cannot infer the correct mapping model. For the manual migration I'm sure of this, because the code for the mapping model is below the one for the source model (that returns nil). This is my code (for manual migration) NSString *applicationSupportFolder = [self applicationSupportFolder]; NSError *storeMetadataError = nil; NSString *persistentStorePath = [applicationSupportFolder stringByAppendingPathComponent: @"Heicos.sql"]; NSURL *persistentStoreURL = [NSURL fileURLWithPath:persistentStorePath]; NSDictionary *persistentStoreMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType URL:persistentStoreURL error:&storeMetadataError]; if (!persistentStoreMetadata) [NSApp presentError:storeMetadataError]; //! If the model isn't compatible with the store, migrates the store NSManagedObjectModel *destinationModel = [self managedObjectModel]; // See note below if (![destinationModel isConfiguration:nil compatibleWithStoreMetadata:persistentStoreMetadata]) { NSManagedObjectModel *sourceModel = [NSManagedObjectModel mergedModelFromBundles:nil forStoreMetadata:persistentStoreMetadata]; // Returns nil NSString *sourceStorePath = [persistentStorePath stringByAppendingString:@"~"]; [[NSFileManager defaultManager] movePath:persistentStorePath toPath:sourceStorePath handler:nil]; NSMigrationManager *migrationManager = [[NSMigrationManager alloc] initWithSourceModel:sourceModel destinationModel:destinationModel]; NSURL *sourceStoreUrl = [NSURL URLWithString:sourceStorePath]; NSMappingModel *mappingModel = [NSMappingModel mappingModelFromBundles:nil forSourceModel:sourceModel destinationModel:destinationModel]; NSError *migrationManagerError; if (![migrationManager migrateStoreFromURL:sourceStoreUrl type:NSSQLiteStoreType options:nil withMappingModel:mappingModel toDestinationURL:persistentStoreURL destinationType:NSSQLiteStoreType destinationOptions:nil error:&migrationManagerError]) [NSApp presentError:migrationManagerError]; } Note: I tried to implement the managedObjectModel: method in three ways, but none of them works: 1) XCode Core Data template code: NSMutableSet *allBundles = [[NSMutableSet alloc] init]; [allBundles addObject: [NSBundle mainBundle]]; [allBundles addObjectsFromArray: [NSBundle allFrameworks]]; managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:[allBundles allObjects]]; return managedObjectModel; 2) Keeping the models in the .xcdatamodeld directory managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MacZone_DataModel" ofType:@"momd"]]]; return managedObjectModel; 3) Moving the models out of the .xcdatamodeld directory, making them top level resources in the main bundle: managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MacZone_DataModel" ofType:@"mom"]]]; return managedObjectModel; Thank you. -- Matteo Manferdini Pawn Software www.pawn-soft.com _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com