<分区>
要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:Stack Overflow question checklist
关闭 9 年前。
<分区>
要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:Stack Overflow question checklist
关闭 9 年前。
我有一个 LIVE 应用程序,我想更改核心数据数据库。
我一直在处理迁移错误并阅读了几个问题和答案,但我想问以下问题:
进行此更改的正确顺序步骤是什么?
在我的例子中,我只想将属性添加到单个表,但我从哪里开始,有哪些步骤? 例如,我首先创建一个新版本的 xcdatamodel? 添加属性并创建新的 .h 和 .m 文件或替换现有的? Core Data Model是否需要填写Identifier(当前模型未填写)?
非常感谢。 问候, 马力
最佳答案
以下是对我有用的方法(改编自 Pro Core Data for iOS,Apress)。并且这假定您只是将属性添加到表中。迁移步骤不适用于一些更复杂的模型更改。
准备您的新模型...
迁移...
您需要告诉 Xcode 自动处理此迁移,只要迁移适合您所做的所谓的轻量级迁移,它就可以执行此操作。
像这样...
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreDataTest.sqlite"];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES],
NSInferMappingModelAutomaticallyOption, nil];
NSError *error = nil;
然后在对 addPersistentStoreWithType:configuration:URL:options:error:
的调用中,将选项参数替换为 nil,如下所示...
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:options
error:&error])
最后一步是更新所有受影响的 NSManagedObject 子类(如果有的话)。如果对模型的更改很小,直接编辑文件可能会更容易。或者您可以选择重新生成文件(选择实体,然后从编辑器菜单中选择 CreateNSManagedObject 子类...)如果您在 .h 或 .m 中添加了自己的代码,则需要确保保存这些文件首先在桌面等地方创建文件,重新生成文件,然后小心地将代码复制到新生成的文件中。
构建并运行。
关于ios - 如何更改核心数据数据库 : baby steps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20405102/
相关文章:
iphone - XCode 4.5 给我 "SenTestingKit/SenTestKit.h"文件未找到,但适用于 4.4.1
iphone - 是否可以将 X11 服务器移植到 iPhone 上?
database - 如何在 firestore 中获取 setData 的 Id?
java - Apache Derby 和 Java - 优化插入
ios - 使用 CIAdditionCompositing 添加纯黑色时的预期行为?
ios - 在 heightForRowAtIndexPath 中推断行高
ios - 更改facebook iOS登录和注销按钮的背景
database - 当 Web 应用程序使用多个数据库(如 Sitecore 拥有)时,写入数据库如何工作
ios - 调用可以抛出,但是没有标记 'try' 错误没有处理: NSRegularExpression
ios - 尝试访问数据库时无法识别 Firebase 唯一标识符(用户 ID)并且应用程序崩溃? swift iOS9