重命名核心数据实体,表示ClassName不会重命名

时间:2015-03-11 15:24:46

标签: ios xcode core-data

使用Xcode 6.2和CoreData。我需要重命名几个实体名称并重新创建NSManaged对象,并注意到New Managed对象的命名与新实体名称相同 - 使用旧名称。

这是数据模型内容文件中diff的一些输出:

-    <entity name="SavedSignSets" representedClassName="SavedSignSets" syncable="YES">
+    <entity name="SavedSignSet" representedClassName="SavedSignSets" syncable="YES">

这是一个错误,还是我做错了什么?


更新 确切的问题是:

  1. 我有一个现有的实体和Xcode 6.2生成的相应的托管对象。实体和托管对象具有相同的名称。
  2. 我更改了实体名称。
  3. 我删除了相应的托管目标文件。
  4. 使用Xcode 6.2我为实体生成管理对象 - 假设将使用新名称
  5. Xcode使用旧实体名称命名托管对象。

2 个答案:

答案 0 :(得分:9)

选择实体并在实用程序视图的数据模型检查器(左侧菜单)中检查实体检查器,每个实体都有一个名称字段和一个类字段。在GUI中更改名称时,只更改类名。要更正错误,您也可以更改名称。

答案 1 :(得分:0)

核心数据框架在XCode中有点笨拙。它似乎在覆盖现有的自动生成文件时感到困惑。我无法保证这是一个修复程序,但您可以尝试从XCode Navigation窗口手动删除旧的Managed Object类文件(确保删除,而不仅仅是删除引用),然后再次创建NSManagedObject子类以它为新文件的幌子。

在执行此操作时,还要手动检查其他文件中的任何关系引用是否也使用新的类名更新(有时它们将作为关系一侧的通用NSManagedObject类加载)。作为标准做法,我将它作为标准做法教给我们删除整个生成的实体文件集并将它们重新创建为一个组。

(另外,我正在运行XCode 6.1.1所以我不是你的确切版本)