从数据模型更新 NSManagedObject 类定义

Posted

技术标签:

【中文标题】从数据模型更新 NSManagedObject 类定义【英文标题】:Updata NSManagedObject class definition from datamodel 【发布时间】:2012-04-18 09:08:54 【问题描述】:

对 CoreData 相当陌生(2 小时前开始使用它;))我一直想知道是否有更简单的方法来做事。

我目前正在使用 DataModel 来创建我的持久对象代码。

但是,当我不断调整诸如排序的属性数量、字段名称等内容时……这会导致更新我的 NSManagedObjects 的代码。

我发现您可以创建具有已实现属性的类,但是,除了手动添加或创建新对象并覆盖之外,我还没有想出如何更新现有类的代码现有的?(或其他开发者是如何做到的)

我知道答案肯定是:“没有更好的办法”,但我还是要问。

【问题讨论】:

我希望没有更好的方法嘿嘿嘿(因为我也花了很多时间......)我会关注这个帖子!感谢您的提问。 【参考方案1】:

查看mogenerator。

此命令行实用程序将生成两个类文件。一台机器生成 _MyClass 标头和实现,以及您模型的所有代码。它还将创建一个子类MyClass,您可以在其中添加自己的自定义设置。

每次重新生成代码时,只会更新机器生成的_MyClass 文件。您对MyClass 所做的所有更改都将被保留。

【讨论】:

不错的解决方案,但是如果您使用 ARC,由于“结构”,生成的代码将不起作用,对此有任何想法(停用 ARC 的一部分) 是的,mogenerator 可以选择在模板中启用 ARC。在命令行中使用 `--template-var arc=true`。 有几个问题:mogenerator 的文档在哪里?如何创建自定义初始化? 我总是参考自述文件或the source on github【参考方案2】:

如果不能使用 mogenerator,可以使用原生代码生成。确保每次都重新生成代码。但是,这将删除所有更改。

所以,您有两个非常可行的选择。

    在实体类上写一个类别。您可以使用类别做几乎所有您想做的事情。

    实体的子类,并将所有代码放入其中。

就个人而言,我更喜欢使用类别,除非我绝对必须继承......这是极其罕见的。

【讨论】:

以上是关于从数据模型更新 NSManagedObject 类定义的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NSObject 模型类转换为 NSManagedObject 的子类?

在更新时跟踪 NSManagedObject 属性并立即更新视图

swift中自定义NSManagedObject类核心数据的问题

iOS 管理域模型和 NSManagedObject 模型

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

在 Xcode 6 中从核心数据数据模型创建 NSManagedObject 子类