报这个错误,说明你在运行这次程序时,更改了数据库中的表内容,比如更改了表属性,或者增加了一张表等。这个时候运行就会报这个错误。告诉你,用来创建数据库的模型和你用来打开数据库的模型是不相容的,也就是你动了这个model,动了数据库中表的内容。一般程序崩溃会在下面的函数崩溃:
– (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
_persistentStoreCoordinator !=nil) {
return_persistentStoreCoordinator;
}
applicationDocumentsDirectory
NSError *error = nil;
alloc
addPersistentStoreWithTypeURL:storeURL options:nilerror:&error]) {
NSLog(@"Unresolved error %@, %@", error, [erroruserInfo]);
abort();
}
return_persistentStoreCoordinator;
}
这个时候分两种情况:
1. 如果你不是在更新app,只是在简单的跑应用,那么把程序卸载重装就能解决问题。
2. 如果你是在更新app,那这个时候就有点难办了。
1)如果不要求保存数据库里的数据的话,,可以在上面的函数里面增加下面的代码:
standardUserDefaults
[[NSFileManagerdefaultManager] removeItemAtURL:storeURLerror
forKey
[[NSUserDefaultsstandardUserDefaults] synchronize];
}
其中用userDefaults控制一下。
2)如果要保存数据库里的数据,那么就要做数据迁移了,即把原数据库中的数据迁移出来,保存,然后再写入新数据库中。
人之相识,贵在相知;人之相知,贵在知心。