【问题标题】:Adding an Attribute to a Core Data Entity向核心数据实体添加属性
【发布时间】:2013-02-08 19:17:59
【问题描述】:

这已经讨论了很多,但我发现没有任何帮助我......我只想将单个属性添加到单个实体。当然不会丢失我的数据。

To do that, I followed these steps

但我认为它根本不起作用。只要不尝试使用新属性就没有错误。但是在我的核心数据模型中(当我在 XCode 中打开 .xcdatamodel 时)它就在那里,甚至在我的实体的 NSManagedObject 子类中,新属性也作为属性存在。但是当我尝试使用它时,会发生这种情况:

unrecognized selector sent to instance 0x74f8520

the entity Name is not key value coding-compliant for the key "isFavoriteName".'

“isFavoriteName”键是我刚刚添加的。就像我说的,我完成了所有步骤。我错过了什么吗? 我认为,新的模型版本没有被使用,因为当我删除模型中的一些属性时,我的应用程序仍然可以工作并且仍然显示删除的信息......我已经将当前的核心数据模型版本设置为新的(第 6 步)。

希望你能帮帮我!

尼克

编辑:我可能还需要更改代码中的某些内容吗?除了在创建 persistentStoreCoordinator 时设置选项...因为我有,比如说 myApp.xdatamodel 并且在其中,我知道有 myApp.xdatamodel 和 myApp 2,xdatamodel... 但我的代码我仍然会做:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"mom"];

_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

【问题讨论】:

    标签: iphone ios xcode core-data core-data-migration


    【解决方案1】:

    没错-您链接到的页面遗漏了适用于您的情况的步骤。即使您创建了模型的新版本,您的代码仍会按名称加载旧版本。

    不要只是将其更改为加载版本 2。改为这样做:

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"momd"];
    

    这将查看momd 文件夹并获取当前版本。在这种情况下,它将获得版本 2。如果您将来再次更改模型,它将获得当时的任何版本。

    【讨论】:

    • 您好,感谢您的 anwnser,但我看不出您和我的代码之间的区别...?
    • 啊我找到了:withExtension:@"mom"] 应该是 withExtension:@"momd"]... 这只是一个小变化,我之前没有注意到。现在它起作用了!非常感谢 =)
    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多