修改核心数据模型后重新创建类定义的更好方法?

Posted

技术标签:

【中文标题】修改核心数据模型后重新创建类定义的更好方法?【英文标题】:Better way to recreate the class definition after modifying core data model? 【发布时间】:2012-08-27 17:56:16 【问题描述】:

在XCode中设计核心数据模型时,可以通过

自动生成NSManagedObject子类定义(.m和.h文件)
    选择实体EDITOR 菜单中选择“创建 NSManagedObject 子类”

之后,你可能会在这些类中添加大量代码,如果之后由于某种原因需要大量修改数据模型设置怎么办?为了在数据模型上反映这些变化,有没有自动的方法来做到这一点?或者您必须手动完成所有操作。

目前,如果我尝试再次(自动)从 EDIT 菜单重新创建这些类定义,它将替换所有当前文件。所有添加的代码都会消失。

我真的希望未来版本的 Xcode 可以添加一个智能功能:自动更新默认类定义而不会丢失添加的工作。也许我太懒了。 :)

【问题讨论】:

【参考方案1】:

您遇到了一个常见问题。暂时你还停留在用 Xcode 创建托管对象子类的方法上。知道了这一点,您可以:

围绕它进行设计

对于简单的情况,您可以使用类别向您的NSManagedObject 子类添加功能(尽管不是状态)。每次数据模型更改时,类别文件中的代码显然不会被覆盖。

不要使用 Xcode

Mogenerator 是一个很好的工具,旨在解决这个问题。它为每个实体创建 两个 类而不是一个,从而允许 Xcode 管理一个而您管理另一个。

【讨论】:

【参考方案2】:

Apple 似乎已经解决了 XCode 7 的问题:现在它会自动创建实体和实体的类别及其核心数据属性。重新生成时,它只会更新类别,而不会损坏实体类中的自定义代码。看到这个link

【讨论】:

【参考方案3】:

您可以创建一个不同名称的类并将生成的字段粘贴到旧类中

【讨论】:

以上是关于修改核心数据模型后重新创建类定义的更好方法?的主要内容,如果未能解决你的问题,请参考以下文章

修改核心数据模型每次都需要新版本?

核心数据类的无效重新声明

核心数据 - 与目标规范共享模型?

django模型表单ModelForm

更改核心数据关系验证规则后保存缓慢

强制核心数据更新模型