我剛剛創建了一個新版本的核心數據模型,其中包含一個額外的對象以及重新建立的關係。添加新版本的核心數據模型?
我現在有兩個文件,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