I just started with the basic data of the iPhone, and I ran into the problem of lightweight migration.
- I added two new fields to my old model.
- Regenerated Model Class Files
- Made a new version of the model as the current version
The following code is added in AppDelegate in the created template
NSDictionary * options = [Dictionary NSDictionaryWithObjectsAndKeys: [NSNumberWithBool: YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumberWithBool: YES], NSInferMappingModelAutomaticallyOption, nil];
if (! [persistentStoreCoordinator_ addPersistentStoreWithType: NSSQLiteStoreType configuration: nil URL: storeURL options: options error: & error]) {
Then, finally, I did a clean build before running the application.
I get the following error when the application crashes ...
The operation couldn't be completed. (Cocoa error 134140.)" UserInfo=0x622b350 {reason=Can't find or automatically infer mapping model for migration
Now for debugging, I added the following code ...
NSError *error = nil; NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType URL:storeURL error:&error]; if (!sourceMetadata) { NSLog(@"sourceMetadata is nil"); } else { NSLog(@"sourceMetadata is %@", sourceMetadata); }
The following result is displayed ...
2011-01-20 18:18:41.018 MyApp[4438:207] sourceMetadata is { NSPersistenceFrameworkVersion = 248; NSStoreModelVersionHashes = { Fugitive = <e33370b6 e7ca3101 f91d2595 1e8bfe01 3e7fb4de 6ef2a31d 9e50237b b313d390>; }; NSStoreModelVersionHashesVersion = 3; NSStoreModelVersionIdentifiers = ( ); NSStoreType = SQLite; NSStoreUUID = "E711F65F-3C5A-4889-872B-6541E4B2863A"; "_NSAutoVacuumLevel" = 2; }
I checked the application suite> MyApp.momd> File VersionInfo.plist
he got the following contents ...
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>NSManagedObjectModel_CurrentVersionName</key> <string>MyApp 2</string> <key>NSManagedObjectModel_VersionHashes</key> <dict> <key>MyApp</key> <dict> <key>Fugitive</key> <data> 4zNwtufKMQH5HSWVHov+AT5/tN5u8qMdnlAje7MT05A= </data> </dict> <key>MyApp 2</key> <dict> <key>Fugitive</key> <data> N58Lf4BNpACzrsHAb1+BQImgjsBZ+u5G0wGUyt84+Ec= </data> </dict> </dict> </dict> </plist>
What am I missing here?
UPDATE The problem turned out to be a default attribute that I missed in the model.
iphone core-data core-data-migration mapping-model
vikmalhotra Jan 20 '11 at 10:21 2011-01-20 10:21
source share