【发布时间】:2017-04-07 13:29:26
【问题描述】:
我添加了新版本的数据模型。我在新版本中添加了新字段。还将当前模型版本设置为新创建的版本。
代码更新:
- (NSManagedObjectModel *)managedObjectModel
{
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"PPUSFAModel" withExtension:@"momd"];
//I earlier was PPUSFAModel 16, i added new model version PPUSFAModel 17.
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:SQLITENAME];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
//Error
}
return _persistentStoreCoordinator;
}
在添加一些属性之前它一直有效,但在某些时候我在下面的代码中崩溃了
- (void)saveContext
{
__block NSError *error = nil;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
[managedObjectContext performBlockAndWait:^{
if (managedObjectContext != nil && _persistentStoreCoordinator != nil) {
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
// Replace this implementation 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.
// DLog(@"Unresolved error %@, %@", error, [error userInfo]);
//abort();
}
} }];
}
这是崩溃的截图:
当我通过从设备中删除早期应用程序进行安装时,它可以工作,但在现有版本上更新应用程序时会崩溃。
//如果我不小心在旧模型版本而不是新版本中添加了字段如何解决?
任何帮助将不胜感激。
【问题讨论】:
-
处理
//Error -
不小心,我编辑了实体属性的数据类型,没有创建新模型版本。
标签: ios objective-c core-data