The model used to open the store is incompatible with the one used to create the store
Asked Answered
M

26

187

I created a Core Data model in xcode 3.2 and after upgrading in Xcode 4.2, I then added a new entity of the NSManagedObject subclass (refer to the new entity).

First thing, it looks weird because it's not in the same group as the old one. Here is the picture on my xcode 4.2 (AlkitabDB is the one i created in xcode 3.2, EndeDB is the new one from current xcode version(4.2):

the new entity do not grouped in xdatamodel

Second thing, I let it as it is, then I accessed the second entity (the new one) the same way as the first entity (the old one), and the error as titled appears.

Here is the error:

2012-01-16 21:13:38.496 iHuria[55953:207] Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn’t be completed. (Cocoa error 134100.)" UserInfo=0x8829cd0 {metadata=<CFBasicHash 0x882a370 [0x1839b38]>{type = immutable dict, count = 7,
entries =>
    2 : <CFString 0x8829b90 [0x1839b38]>{contents = "NSStoreModelVersionIdentifiers"} = <CFArray 0x8829ff0 [0x1839b38]>{type = immutable, count = 0, values = ()}
    4 : <CFString 0x8829bc0 [0x1839b38]>{contents = "NSPersistenceFrameworkVersion"} = <CFNumber 0x8829770 [0x1839b38]>{value = +320, type = kCFNumberSInt64Type}
    6 : <CFString 0x8829bf0 [0x1839b38]>{contents = "NSStoreModelVersionHashes"} = <CFBasicHash 0x882a080 [0x1839b38]>{type = immutable dict, count = 1,
entries =>
    0 : <CFString 0x882a010 [0x1839b38]>{contents = "AlkitabDB"} = <CFData 0x882a030 [0x1839b38]>{length = 32, capacity = 32, bytes = 0xd02ac5f8be6ab0b39add450aca202ac0 ... 3d45d462998d2ccd}
}

    7 : <CFString 0x10e3aa8 [0x1839b38]>{contents = "NSStoreUUID"} = <CFString 0x8829e60 [0x1839b38]>{contents = "4F2EE7FF-463B-4055-BBED-8E603CDBDF59"}
    8 : <CFString 0x10e3948 [0x1839b38]>{contents = "NSStoreType"} = <CFString 0x10e3958 [0x1839b38]>{contents = "SQLite"}
    9 : <CFString 0x8829c40 [0x1839b38]>{contents = "NSStoreModelVersionHashesVersion"} = <CFNumber 0x6b1c7c0 [0x1839b38]>{value = +3, type = kCFNumberSInt32Type}
    10 : <CFString 0x8829c70 [0x1839b38]>{contents = "_NSAutoVacuumLevel"} = <CFString 0x882a0c0 [0x1839b38]>{contents = "2"}
}
, reason=The model used to open the store is incompatible with the one used to create the store}, {
    metadata =     {
        NSPersistenceFrameworkVersion = 320;
        NSStoreModelVersionHashes =         {
            AlkitabDB = <d02ac5f8 be6ab0b3 9add450a ca202ac0 ebd1e860 cbb578c2 3d45d462 998d2ccd>;
        };
        NSStoreModelVersionHashesVersion = 3;
        NSStoreModelVersionIdentifiers =         (
        );
        NSStoreType = SQLite;
        NSStoreUUID = "4F2EE7FF-463B-4055-BBED-8E603CDBDF59";
        "_NSAutoVacuumLevel" = 2;
    };
    reason = "The model used to open the store is incompatible with the one used to create the store";
}

I looked for the solution before and discovered that I should remove the appliation from simulator and rerun the app, and it didn't work. Does anyone know a solution for this issue? Please help.

Moschatel answered 16/1, 2012 at 14:32 Comment(0)
M
308

Deleting the app is sometimes not the case! Suggest, your app has already been published! You can't just add new entity to the data base and go ahead - you need to perform migration!

For those who doesn't want to dig into documentation and is searching for a quick fix:

  1. Open your .xcdatamodeld file
  2. click on Editor
  3. select Add model version...
  4. Add a new version of your model (the new group of datamodels added)
  5. select the main file, open file inspector (right-hand panel)
  6. and under Versioned core data model select your new version of data model for current data model
  7. THAT'S NOT ALL ) You should perform so called "light migration".
  8. Go to your AppDelegate and find where the persistentStoreCoordinator is being created
  9. Find this line if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
  10. Replace nil options with @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES} (actually provided in the commented code in that method)
  11. Here you go, have fun!

P.S. This only applies for lightweight migration. For your migration to qualify as a lightweight migration, your changes must be confined to this narrow band:

  • Add or remove a property (attribute or relationship).
  • Make a nonoptional property optional.
  • Make an optional attribute nonoptional, as long as you provide a default value.
  • Add or remove an entity.
  • Rename a property.
  • Rename an entity.

For Swift 4

coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true])
Marchesa answered 4/7, 2013 at 16:55 Comment(10)
Note that this only works for Lightweight migration! Read about it here: developer.apple.com/library/ios/documentation/cocoa/Conceptual/…Aerometeorograph
Sorry, can you clarify steps 5 and 6? I can't see that option anywhere, but perhaps I'm confused about the "main file" you refer to?Penland
main file is the .xcdatamodel that you created. You should open the first tab of Utilities pane(right hand side one) and find "Model Version"(Xcode 5.1) and select Current:"your newly created .xcdatamodel"Marchesa
where is the 'versioned core data model'?Sain
@Computer_whiz123, in XCode 5.1.1 it is called 'Model Version'Marchesa
How would I do this is Swift?Bacchius
I get this error: "CoreData: error: -addPersistentStoreWithType:SQLite configuration:(null) URL:file:///...file.sqlite options:{ NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; } ... returned error Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed. (Cocoa error 134130.)"Artefact
Swift Migration options : let options = [ NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption:true ]Uninhibited
For anyone searching for the MacOS app equivalent, there's some info about lightweight migration of NSPersistentDocument here: code-examples.net/en/q/989a82.Fipple
This tutorial is awesome codzify.com/iOS/…Auklet
D
285

Remove the app from the simulator and perform a clean on your project. That should clear those issues up. Make sure that you are not running in the debugger when you delete the app or else it won't actually delete it properly.

If you want to be sure its gone, check this directory Users/INSERT_YOUR_USER_HERE/Library/Application Support/iPhone Simulator/ for your app's folder, under the version you're running.

Note: This is for development only. For production, you need to implement some sort of migration. Google "Core Data Migration", with lightweight migration being the simplest.

Deciare answered 16/1, 2012 at 15:5 Comment(8)
thx for replied Philippe, i tried and it didnt work :(, do u have any other suggestion?Moschatel
Can you post the code you use the create the model and persistent store in your app delegate?Deciare
Its a bit unreasonable why this happens and why such a solution does the trick, but thats that.. cant help.. nywaz, here goes my up vote.. the best i can do right now to appreciate your guidelines.. thanks a lot for the help mate.!!Calamus
Helped me solve a problem in Xcode 4.6, where I sent to trash all my projects file by mistake :/Kuching
Worked for me. COuld you explain a bit why we need to clean up the project ?Saltcellar
The clean is probably not necessary but can't hurt. Sometimes old compiled assets hang around even after you've updated them, though that's not likely. The newest versions of the tools are also better at dealing with this stuff then when I answered this question. Removing the app on the simulator/device when changing the model is still necessary though unless you perform a migration with versioned models.Deciare
@PhilippeSabourin if I update my data model and I send this update to a production app the uses would have to remove the app and install the app again ? or is it just a development procedure?Lathy
This is for development only! For production, you use model versioning and migration. developer.apple.com/library/ios/#documentation/cocoa/Conceptual/…Deciare
N
38

Just add Options attribute while creating persistentStoreCoordinator in AppDelegate.m file for the core data method as below

OBJECTIVE-C

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

    NSLog(@"persistentStoreCoordinator___");
    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyApp.sqlite"];

    NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
    [options setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
    [options setObject:[NSNumber numberWithBool:YES] forKey:NSInferMappingModelAutomaticallyOption];

    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
    {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }

    NSLog(@"persistentStoreCoordinator___2");
    return _persistentStoreCoordinator;
}

SWIFT

    lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = {
    // The persistent store coordinator for the application. This implementation creates and returns a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail.
    // Create the coordinator and store
    let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
    let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("SingleViewCoreData.sqlite")
    var failureReason = "There was an error creating or loading the application's saved data."

    // MAIN LINE OF CODE TO ADD
    let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true,
                    NSInferMappingModelAutomaticallyOption: true]

    do {
        try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: mOptions)
    } catch {
        // Report any error we got.
        var dict = [String: AnyObject]()
        dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
        dict[NSLocalizedFailureReasonErrorKey] = failureReason

        dict[NSUnderlyingErrorKey] = error as NSError
        let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
        // Replace this with code to handle the error appropriately.
        // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
        NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
        abort()
    }

    return coordinator
}

It had solved my problem..

Ninnyhammer answered 24/4, 2014 at 7:24 Comment(1)
Thank you for this post it really helpfulMolecular
E
23

Answer : Remove the app from the Simulator , Perform a Clean and Re-Build your Project.

Note : Whenever you perform changes to the Core Data definition, Delete the app installed on the Physical Device or Simulator, Clean the Project and Re-Build again.

Eurythmic answered 25/5, 2013 at 14:36 Comment(1)
Resetting contents and settings in the simulator fixed the issue for me!Thanks.Ostosis
I
14

Yes. Once you delete app on physical device and rebuild it works.

Inn answered 30/7, 2012 at 15:3 Comment(3)
This actually solved my problem rather than the accepted answer. thanks!Systemic
what happen in production its not the answerBarajas
This is a horrible answer, you need to add migration to your new model otherwise the app will crash in prodMader
L
14

For swift, in AppDelegate.swift find the line

try coordinator!.addPersistentStoreWithType(NSXMLStoreType, configuration:  nil, URL: url, options: nil )

and replace it with

try coordinator!.addPersistentStoreWithType(NSXMLStoreType, configuration: nil, URL: url, options: [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true])
Leitmotiv answered 24/5, 2016 at 11:53 Comment(0)
F
11

I just spent several days fighting this error, as well as mergedModelFromBundles crashes, and getting the "Can't merge models with two different entities named *" error.

It turns out the root problem was that Xcode doesn't remove old resources from devices and I had old versions of my data model (.mom files) that were causing conflicts. This is why deleting the app fixed the problem on one of my devices.

After finding this blog post via another SO answer I made my app more tolerant of old models by changing this line which looks for ALL .mom files:

NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];

to this, which only looks in the Filters directory:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Filters" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];

I used recursivePathsForResourcesOfType from this so question: to help figure this out by logging all of the .mom files in the app:

NSArray *momPaths = [self recursivePathsForResourcesOfType:@"mom" inDirectory:[[NSBundle mainBundle] resourcePath]];
NSLog(@"All .mom files:%@",momPaths);

I also used iExplorer to look at the extraneous .mom files (I didn't try deleting them yet).

The method below was also helpful. It showed that an entity was in the merged model returned by [psc managedObjectModel] that didn't exist any more in any of my models or in the store itself. This was what let me to believe an old model was being cached on the device itself that clean building didn't remove. The method logs each entity that is the same, been changed, or added to, or removed from the model. (written with this SO answer as a starting point):

- (BOOL)comparePersistentStore:(NSPersistentStoreCoordinator *)psc withStoreURL: (NSURL *)storeURL {
    NSError *error = nil;

    // Get the entities & keys from the persistent store coordinator
    NSManagedObjectModel *pscModel = [psc managedObjectModel];
    NSDictionary *pscEntities = [pscModel entitiesByName];
    NSSet *pscKeys = [NSSet setWithArray:[pscEntities allKeys]];
    //NSLog(@"psc model:%@", pscModel);
    //NSLog(@"psc keys:%@", pscKeys);
    NSLog(@"psc contains %d entities", [pscModel.entities count]);

    // Get the entity hashes from the storeURL
    NSDictionary *storeMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType
                                                                                          URL:storeURL
                                                                                        error:&error];
    NSDictionary *storeHashes = [storeMetadata objectForKey:@"NSStoreModelVersionHashes"];
    //NSLog(@"store metadata:%@", sourceMetadata);
    NSLog(@"store URL:%@", storeURL);
    NSLog(@"store NSStoreUUID:%@", [storeMetadata objectForKey:@"NSStoreUUID"]);
    NSLog(@"store NSStoreType:%@", [storeMetadata objectForKey:@"NSStoreType"]);
    NSSet *storeKeys = [NSSet setWithArray:[storeHashes allKeys]];

    // Determine store entities that were added, removed, and in common (to/with psc)
    NSMutableSet *addedEntities = [NSMutableSet setWithSet:pscKeys];
    NSMutableSet *removedEntities = [NSMutableSet setWithSet:storeKeys];
    NSMutableSet *commonEntities = [NSMutableSet setWithSet:pscKeys];
    NSMutableSet *changedEntities = [NSMutableSet new];
    [addedEntities minusSet:storeKeys];
    [removedEntities minusSet:pscKeys];
    [commonEntities minusSet:removedEntities];
    [commonEntities minusSet:addedEntities];

    // Determine entities that have changed (with different hashes)
    [commonEntities enumerateObjectsUsingBlock:^(NSString *key, BOOL *stop) {
        NSData *storeHash = [storeHashes objectForKey:key];
        NSEntityDescription *pscDescrip = [pscEntities objectForKey:key];
        if ( ! [pscDescrip.versionHash isEqualToData:storeHash]) {
            if (storeHash != nil && pscDescrip.versionHash != nil) {
                [changedEntities addObject:key];
            }
        }
    }];

    // Remove changed entities from common list
    [commonEntities minusSet:changedEntities];

    if ([commonEntities count] > 0) {
        NSLog(@"Common entities:");
        [commonEntities enumerateObjectsUsingBlock:^(NSString *key, BOOL *stop) {
            NSData *storeHash = [storeHashes objectForKey:key];
            NSEntityDescription *pscDescrip = [pscEntities objectForKey:key];
            NSLog(@"\t%@:\t%@", key, pscDescrip.versionHash);
        }];
    }
    if ([changedEntities count] > 0) {
        NSLog(@"Changed entities:");
        [changedEntities enumerateObjectsUsingBlock:^(NSString *key, BOOL *stop) {
            NSData *storeHash = [storeHashes objectForKey:key];
            NSEntityDescription *pscDescrip = [pscEntities objectForKey:key];
            NSLog(@"\tpsc   %@:\t%@", key, pscDescrip.versionHash);
            NSLog(@"\tstore %@:\t%@", key, storeHash);
    }];
    }
    if ([addedEntities count] > 0) {
        NSLog(@"Added entities to psc model (not in store):");
        [addedEntities enumerateObjectsUsingBlock:^(NSString *key, BOOL *stop) {
            NSEntityDescription *pscDescrip = [pscEntities objectForKey:key];
            NSLog(@"\t%@:\t%@", key, pscDescrip.versionHash);
        }];
    }
    if ([removedEntities count] > 0) {
        NSLog(@"Removed entities from psc model (exist in store):");
        [removedEntities enumerateObjectsUsingBlock:^(NSString *key, BOOL *stop) {
            NSData *storeHash = [storeHashes objectForKey:key];
            NSLog(@"\t%@:\t%@", key, storeHash);
        }];
    }

    BOOL pscCompatibile = [pscModel isConfiguration:nil     compatibleWithStoreMetadata:storeMetadata];
    NSLog(@"Migration needed? %@", pscCompatibile?@"no":@"yes");

    return pscCompatibile;
}

usage: called before adding each store to NSPersistentStoreCoordinator :

    [self comparePersistentStore:self.psc withStoreURL:self.iCloudStoreURL];
    _iCloudStore = [self.psc addPersistentStoreWithType:NSSQLiteStoreType
                                          configuration:nil
                                                    URL:self.iCloudStoreURL
                                                options:options
                                                  error:&localError];
Feme answered 30/10, 2012 at 20:12 Comment(0)
G
10

Every time you making change to the Core Date definition, you should delete the apps installed on the physical device or simulator.

Grimaldi answered 11/7, 2012 at 5:23 Comment(3)
What about production apps? Will they instantly crash if you push an update to the App Store with changes to Core Data? ThxGlister
developer.apple.com/library/ios/#documentation/cocoa/Conceptual/…Deciare
Yes, changes in the CD model prevents data generated with the previous model from loading. To handle this, you need to detect the problem and do a Core Data Migration.Volpe
R
8
  1. Stop app from running.
  2. Delete app on simulator.
  3. Product - > Clean
  4. Build, run.
Ripplet answered 19/5, 2015 at 13:49 Comment(1)
bad practice in production, crash the appBarajas
S
7

The simplest solution that worked for me in Swift 2.1, Xcode 7 is :

  1. Delete the app from the Simulator ( Cmd + Shift + H to go to the Home Screen. Long Press the app, Click cross, just the usual way you delete an app from your phone)

  2. Cmd + Shift + H again to stop the dancing of apps

  3. Go back to your project and rerun

I had this issue while writing/reading from Core Data with 2 entities set up. Deleting the app and rerunning the program fixed the issue

Solicitous answered 12/1, 2016 at 0:3 Comment(1)
bad practice in production, crash the appBarajas
E
6

I just deleted [Simulator App Folder]/Document/*.sqlite file after making changes in entities and it worked. And of course, .sqlite file contains all stored data and structures which will be lost.

Eskil answered 12/11, 2012 at 9:10 Comment(1)
Worked for me too. It seems reasonable that this should be enough. You loose all the data already in the DB though...Wreckage
J
6

Please Delete a application from simulator and clean a code and run .its work fine .do it may be its help YOU.

Jidda answered 19/8, 2014 at 19:51 Comment(0)
P
6

If you are using Swift.

Follow the answer by @Stas and insert options, in place of nil, in your App Delegate:

let myOptions = [NSMigratePersistentStoresAutomaticallyOption: true,
            NSInferMappingModelAutomaticallyOption: true]
        if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: myOptions, error: &error) == nil {
Panier answered 27/2, 2015 at 19:35 Comment(3)
Not sure why that got voted down, but I've righted it. Thanks for providing the syntax for Swift.Weary
Nice! It work! thank you! I'am trying to solve this problem for 3 hours.Cognizant
where to put this code ? i load core data with this code let container = NSPersistentContainer(name: "modeldb") container.loadPersistentStores(completionHandler: { (storeDescription, error) in if let error = error as NSError? {Manysided
P
5

Try "Reset Content & Settings" in the simulator. Worked for me after deleting app and Clean build

Panhellenic answered 15/12, 2012 at 17:8 Comment(1)
If you do this, however, won't the same problem still occur for users on real machines?Penland
I
4

I experienced the same issue with my app (not yet released in App Store).

Here's how I fixed it:

  1. Run Clean (Cmd+Shift+K)
  2. Restart iOS Simulator
  3. iOS Simulator -> Reset Content and Settings (from navbar)

(3) was the step that finally got it to run properly. Hope this helps!

Ifni answered 24/5, 2014 at 15:45 Comment(0)
R
4

In my case, I had two persistent stores, one local store for user specific data, and one CoreData+CloudKit store for common data that syncs automatically with iCloud. Thus the data model has two configurations, and the entities are assigned to both configurations as required.
Due to a bug during development, I tried to store an entity that was no longer assigned to any configuration. So when the context was saved, CoreData realized the incompatibility, and crashed with this error.
Of course, deleting the app does not help in such a case. One has to ensure that only assigned entities are stored in a persistent store.

Ruthenic answered 1/1, 2021 at 11:20 Comment(1)
Thanks a lot!! This was the case for me as well, I forgot to add the entity to the correct configuration, it would be nice if you could edit the answer to make it in the form of bullet points so that it is more readily visible what the issue wasStrafford
A
2

First, the only things that should be in the xcdatamodeld bundle are xcdatamodel files. Your subclasses should NOT be in the xcdatamodeld. Move those out of there. There is a fair chance they are confusing the compiler.

Second, the error indicates that Core Data cannot find your model. Have you created data and then touched the model? If so you are in an inconsistent state and need to fix that either by deleting the data (which Philippe suggested) or by rolling your changes of the model BACK.

Ammoniacal answered 16/1, 2012 at 17:40 Comment(2)
do u have idea how can i take the model out from xcdatamodel bundle? or shd i just delete it?Moschatel
The model, which is the xcdatamodel file should be in there. It is the .h and .m files that need to be moved. Use Finder.Ammoniacal
M
2

Although sometimes you can just remove the app from the device when changing schema in managed object model, in some scenarios this is not possible e.g. because you already published your app with an old schema.

If this is the case, you have to take care of migrating old data to the new schema:

Core Data Model Versioning and Data Migration

Mettlesome answered 10/4, 2013 at 13:28 Comment(0)
S
2

You'll need to migrate the Core Data model using migration. Any time you change the model, you make it incompatible without versioning. Strap yourself in, it's a bit of a hairy topic.

http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html

Sublimity answered 24/4, 2013 at 7:46 Comment(0)
H
1

If you make changes to your Core Data model, you have to provide a migration policy that tells Core Data how to adopt existing persisted objects (that your users created with the currently released version) to the new model.

For some scenarios, Core Data is able to automatically infer the mapping from the old model to the new one. For more complex changes, you might have to implement some logic that performs the migration.

Details can be found in the Core Data Model Versioning and Data Migration Programming Guide.

Update
This answer here on Stack Overflow covers the basics of Core Data's lightweight migration and also has some code to get you started.

Hilleary answered 24/4, 2013 at 7:48 Comment(1)
Here is my answer for the same for data migration : #8881953Ninnyhammer
M
1

This issue generally occurs due to incompatibility between the version on which DB has been created. General approach to this problem is to delete the app and reinstall it. But in your mentioned case the version of DB are completely different on Xcode 3.2 and 4.2. So better use same version of Xcode for DB.

Morisco answered 19/7, 2013 at 6:24 Comment(0)
C
1

This may help some people but may not answer the question. In my case, the problem was solved because I forgot to add the model to the correct configuration. See the screenshot attached. All the models are added to the default configuration, but my application uses the private configuration. Drag and drop your model from the default configuration to the correct configuration.

enter image description here

Colloquial answered 25/11, 2022 at 20:9 Comment(0)
R
0

I was getting the error but the reason I was getting the error was because of the following.

I originally had one Entity named "Entry" and had one row saved for that entity in the database. I then added another Entity named "Person" and after adding that went to build and got the error. So I solved the issue by deleting "Person" Entity and then building the app, deleted the row that was in "Entry" and then closed the application. I then deleted the app entirely off my phone and then did a rebuild and it worked fine. Not sure which step corrected the problem (the deletion of the row or the app), but hopefully if you're looking for a solution this will help. :)

Edit: Oh and if you worried about deleting your new Entity (in my case "Person") to build the app again remember you can get it back afterwards by using CMD+Z!

Ressieressler answered 5/7, 2012 at 23:10 Comment(0)
C
0

I had this problem - I first reset my simulator and then clean the project and rebuild. And then it works.

Cogwheel answered 11/4, 2013 at 7:23 Comment(0)
E
0

When you change core data, ( adding a field to table , removing field etc ), the sqlite file in applications document folder needs to be in sync with your schema.

This file is not overwritten by default, this file needs to be regenerated.

Follow these steps:

  1. Go to the folder pointed by NSURL. (This path can be found in exception message generated by application before crashing.) example : /Users//Library/Application Support/iPhone Simulator//Applications//Documents

  2. remove or rename the sqlite file

  3. Clean and Rerun the application
  4. Rerunning application would generate a new sqlite file.

This will make sure that the schema and Xcode are in sync.

Edholm answered 24/3, 2014 at 17:24 Comment(0)
P
-2

iOS Simulator -> Reset Contents and Settings...

Worked for me

iOS Simulator -> Reset Contents and Settings... -> Reset Works on iOS9 (xcode 7.1) as well

Particular answered 19/11, 2015 at 6:40 Comment(1)
bad practice in production, crash the appBarajas

© 2022 - 2024 — McMap. All rights reserved.