从数据模型更新 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 属性并立即更新视图