我试图使用MagicalRecord设置Core Data的轻量级迁移。我使用Google和SO查看了有关此主题的所有帖子。我理解 persistentStoreCoordinator 是如何工作的以及我想要做的设置也是如此。
这是我的代码:
AppDeligate.h
NSPersistentStoreCoordinator *persistentStoreCoordinator;
AppDelegate.m
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"saori.sqlite"]];
// handle db upgrade
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle error
}
return persistentStoreCoordinator;
}
我收到以下错误,据我所知;我不知道的是这些对象在哪里(我在我的应用程序中查找,没有找到任何内容):
'AppDelegate'没有可见的@interface声明选择器'applicationDocumentsDirectory'和
'AppDelegate'没有可见的@interface声明选择器'managedObjectModel'
我已经创建了商店:
大多数,如果不是我所看到的所有代码都相似;我不知道MagicalRecord是否会为我处理这个问题,因为我找不到任何可以指示如何使用MR执行此操作的文档。我的问题是:我需要做些什么来完成这项工作?
答案 0 :(得分:12)
MagicalRecord的重点在于为您管理:
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:####];
查看有关核心数据堆栈设置的文档here。
答案 1 :(得分:8)
确保检查所有这些内容:
在AppDelegate.m文件中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[MagicalRecord setupAutoMigratingCoreDataStack];
...
}
如果您尚未对您的模型进行版本化修改:
答案 2 :(得分:6)
根据我对这个问题的理解,我建议你使用这个
[MagicalRecord setupAutoMigratingCoreDataStack]
如果您尚未更改模型版本,请将其更改为从旧模型创建的新模型