CoreData - 更新模型类而不是创建新模型

Kha*_*war 5 iphone core-data objective-c nsmanagedobject ios

我在iOS应用程序中使用CoreData.在创建NSManagedObject类时,我大多数时候都会遇到问题.

这就是我做的:

  1. 我在.xcdatamodeld文件中创建一个实体.
  2. 创建属性和关系.
  3. 选择Editor->Create NSManagedObject Class创建.h.m类的选项.
  4. .h.m类中,我创建了一些用于获取/保存对象的自定义方法.

到现在为止还挺好.但是在将来如果我必须更改某些属性,我会重复步骤2和3.但是这次我在步骤4中编写的所有自定义代码都会自动删除.

所以我的问题是如何更新现有的类?而不是使用Editor->Create NSManagedObject Class删除所有自定义代码的选项.

任何帮助表示赞赏.

更新:

测试了两种方法(类别和Mogernator),看起来很好.但我选择了一种纯粹的Xcode方法.我不想承担由于XCode更新而导致将来可能破坏的任何第三方的风险,或者可能导致数据迁移问题.

感谢@Tom Harrington和@Valentin Shamardin指导我:)

Val*_*din 11

要为Core Data模型类创建一些其他方法或其他内容,您必须创建类别.Paul Hegarty在核心数据部分中使用了这种方法.

  • 有60个文件你有什么顾虑?许多项目拥有的文件远多于此.我有一个包含大约30个实体的项目,我使用类别进行所有自定义,并且它非常易于管理. (2认同)

Tom*_*ton 5

处理此问题的最佳方法是使用mogenerator生成模型类,而不是让Xcode执行此操作.使用mogenerator,您可以为每个实体获得两个类:

  • 每次重建模型类时都会重新生成一个
  • 一个是另一个的子类,它仅在您第一次构建模型类时生成,并且生成器之后永远不会更改.

因此,您可以将所有自定义代码放在子类中,无论重新生成模型类的次数如何,您的代码都不会被覆盖.