coreData报错:The model used to open the store is incompatible with the one used to create the store

报这个错误,说明你在运行这次程序时,更改了数据库中的表内容,比如更改了表属性,或者增加了一张表等。这个时候运行就会报这个错误。告诉你,用来创建数据库的模型和你用来打开数据库的模型是不相容的,也就是你动了这个model,动了数据库中表的内容。一般程序崩溃会在下面的函数崩溃:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator

{

if (_persistentStoreCoordinator !=
nil) {

return
_persistentStoreCoordinator;

}

NSURL *storeURL = [[self
applicationDocumentsDirectory] URLByAppendingPathComponent:@"storeName"];

NSError *error = nil;

_persistentStoreCoordinator = [[NSPersistentStoreCoordinator
alloc] initWithManagedObjectModel:[self
managedObjectModel]];

if (![_persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL options:nil
error:&error]) {

NSLog(@"Unresolved error %@, %@", error, [error
userInfo]);

abort();

}

return
_persistentStoreCoordinator;

}

这个时候分两种情况:

1. 如果你不是在更新app,只是在简单的跑应用,那么把程序卸载重装就能解决问题。

2. 如果你是在更新app,那这个时候就有点难办了。

1)如果不要求保存数据库里的数据的话,可以在上面的函数里面增加下面的代码:

if (![[NSUserDefaults
standardUserDefaults] boolForKey:@"isDeleteDB"]) {

[[NSFileManager
defaultManager] removeItemAtURL:storeURL
error:nil];   //删除数据库

[[NSUserDefaults
standardUserDefaults] setBool:YES
forKey:@"isDeleteDB"];

[[NSUserDefaults
standardUserDefaults] synchronize];

}

其中用userDefaults控制一下。

2)如果要保存数据库里的数据,那么就要做数据迁移了,即把原数据库中的数据迁移出来,保存,然后再写入新数据库中。

时间: 2024-10-11 23:08:55

coreData报错:The model used to open the store is incompatible with the one used to create the store的相关文章

CoreData修改了数据模型报错 The model used to open the store is incompatible with the one used to create the store

在iOS 6 – Core Data 应用程序的开发过程中, App启动时出现如下异常信息: reason = “The model used to open the store is incompatible with the one used to create the store” 出现上述异常的原因是 :我们修改了Data Model文件,增加了新的Entity,包括Attribute属性.Relationship关系等等. 解决办法: (1) 最简单的办法是,在iOS 5 或者 6的模

Django 使用allauth报错 RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS

一:报错 RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS 出现这种情况需将Django的Sites框架添加到您的应用程序中,并在您的设置中将SITE_ID设置为1即可.位置放在默认配置的后面,其他应用的前面. INSTALLED_APPS = [ 'django

django配置mysql报错 no model named "MySQLdb"

官网上面连接mysql数据库的参数很少,入了不少坑,一直排错和检查参数都没有问题,只能manage.py mirgrate 更新数据库的信息创建数据库的表. 很是郁闷.报了一大堆的错误,大概意思就是说没有MySQLdb这个模块 . no model named "MySQLdb" 举手无措的我,吓尿了.翻了百度,查找方法,安装mysqldb,mysql-python试了很多个都不行. 最后想了想报错的最后一行.是否安装mysqlclient. 抱着试一试的心态,离线安装了一个mysql

Xcode CoreData 存储报错问题。

因项目接口变动,导致之前的CoreData字段需要调整.于是记录下出错的流程和解决方案.步骤如下: 1. 先在 *****.xcdatamodeld 文件中添加需要调整的字段.并更新本地model实体. 2. 我的流程是接到消息后本地存储在CoreData里面,然后UI展示(具体消息推送和接收问题,之前已经做好了,不在这里讲解.).因我是真机调试,收到消息推送后,但是一直无数据.于是想去本地sqlite里面查看是否已经将消息存储完毕,于是捕捉到路径并执行进入sqlite时问题来了: sqlite

coreData部分报错:This NSPersistentStoreCoordinator has no persistent stores.

最近在修改一个程序BUG的时候遇到一个问题coreData部分报错:This NSPersistentStoreCoordinator has no persistent stores. 但实际跑程序时.增删保存都没问题. 我花了很多的时间在问题抛出的地方在[contextsave:&error]; 后来发现,早在初期化_persistentStoreCoordinator 时就报错了 if (![_persistentStoreCoordinator addPersistentStoreWit

AndroidStudio导入Eclipse项目报错Error:Could not determine the class-path for interface com.android.builder.model.AndroidProject

AndroidStudio导入Eclipse项目报错 Error:Could not determine the class-path for interface com.android.builder.model.AndroidProject 错误原因: Gradle插件版本不一致导致,问题多出现在:eclipse项目转studio 解决步骤: https://blog.csdn.net/qq_21397217/article/details/65630730 原文地址:https://www

FTP上传失败报错227 Entering Passive Model (222,111,8,111,10,40)

昨天为了一个ftp问题折腾了一天.问题背景:原来有个接口涉及到上传文件,服务端更换了ftp服务器,我们这边需要刷新连接服务端的ip和端口配置,代码没动.联调环境和验收环境都测试通过,一到生产环境就歇菜了.我们手工连接ftp并上传文件正常,就是跑接口由程序上传不行.根据日志信息定位发现在登录ftp后做了两个事情,一个是把传输模式设置为二进制,一个是设置被动模式,用apache的Ftpclient实现: ftpClient.enterLocalPassiveMode(): 从代码层面看不出问题,因为

Mybatis缓存报错org.apache.ibatis.exceptions.PersistenceException

错误信息如下: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.cache.CacheException: Error deserializing object. Cause: java.lang.ClassNotFoundException: com.kytsoft.model.Adminlink ### Cause: org.apa

Vboxmanage修改uuid报错的解决办法

我的环境: Virtualbox 4.3.10 r93012 操作系统:win7 问题:Virtualbox在使用拷贝的虚拟盘时会提示uuid冲突: Because a hard disk with uuid '' already exists. 按照网上的说法,运行VBoxManage修改uuid报错: D:\Program Files\Oracle\VirtualBox>VBoxManage  internalcommands sethduuid D:\vm\ rac1\model.vdi