修改核心数据模型后重新创建类定义的更好方法?
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】:您可以创建一个不同名称的类并将生成的字段粘贴到旧类中
【讨论】:
以上是关于修改核心数据模型后重新创建类定义的更好方法?的主要内容,如果未能解决你的问题,请参考以下文章