我刚刚创建了一个新版本的核心数据模型,其中包含一个额外的对象以及重新建立的关系。添加新版本的核心数据模型?
我现在有两个文件,Medical_Codes.xcdatamodel
和Medical_Codes_ 2.xcdatamodel
。
是否必须删除旧的NSManagedObject
类文件并重新创建它们?
我必须更改持久性商店代码吗?
- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel != nil)
{
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Medical_Codes" withExtension:@"mom"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (__persistentStoreCoordinator != nil)
{
return __persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Medical_Codes.sqlite"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:[storeURL path]])
{
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"Medical_Codes" ofType:@"sqlite"];
if (!defaultStorePath)
{
NSLog(@"Error: Could not locate Medical_Codes.sqlite in app bundle");
return nil;
}
NSError *error = nil;
if (![fileManager copyItemAtPath:defaultStorePath toPath:[storeURL path] error:&error])
{
NSLog(@"Error copying sqlite from bundle to documents directory: %@, %@", error, [error userInfo]);
return nil;
}
}
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;
}
我不知道这是否对Jon有帮助,但这是我见过的最好的答案。它肯定帮我解决了我自己的移民问题。 – lukecampbell 2011-12-17 04:25:14