在我无法解决的另一个奇怪的错误之后,我绝对是用Core Data把头发拉出来的。
这将是数据模型的第四个版本,之前的迁移已经奏效(虽然有些令人头疼)。
我想要做的就是将一个String类型的属性添加到'Engines'实体中。我根据当前版本(v3)创建了一个新版本的模型(版本4)。我选择新创建的版本4作为“当前模型”,并将字符串属性添加到Engines实体。然后我创建一个新的映射模型,使用v3作为源,v4作为目标。我删除了以前的Engines NSManagedObject子类,并使用新的,已修改的Engines实体创建一个新子类,检查以确保新的String属性位于头文件中。我清理构建应用程序并运行它,并繁荣!我得到这个错误,大约18次:
{NSDetailedErrors =( “错误域= NSCocoaErrorDomain代码= 1570 \”操作无法完成。 (可可错误1570。)\“UserInfo = 0x6015820 {NSValidationErrorObject =(entity:BodySet; id:0x60ba670; data :),NSValidationErrorKey = availableCar,NSLocalizedDescription =操作无法完成。(Cocoa error 1570.)}”,
BodySet是模型中的另一个实体,但我没有在迁移期间触及它,为什么它会导致所有这些错误?
我不确定这是否有帮助,但这是我的核心数据代码:
- (NSManagedObjectContext *) managedObjectContext {
if (managedObjectContext != nil) {
return managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator: coordinator];
}
return managedObjectContext;
}
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"CoreDataTest" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
return managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
stringByAppendingPathComponent:@"<Project Name>.sqlite"]];
//get the DB from the Documents directory:
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory]
stringByAppendingPathComponent: @"<Project Name>.sqlite"]];
NSLog(@"Loading DB at path: %@", [storeUrl path]);
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 for store creation should be handled in here*/
NSLog(@"Something went wrong....%@", [error description]);
}
return persistentStoreCoordinator;
}
非常感谢任何帮助。
答案 0 :(得分:0)
我已修复它,也许您可以将“availableCar”项目更改为可选