【问题标题】:What is the relationship between NSManagedObject subclasses and the xcdatamodeld file?NSManagedObject 子类和 xcdatamodeld 文件有什么关系?
【发布时间】:2014-05-29 16:30:43
【问题描述】:
  • 我开始在 xcdatamodeld (xcdatamodel) 文件中创建实体。
  • 我使用 Create NSManagedObject Subclass… 菜单项对实体进行了子类化。
  • 我向这些子类添加了自定义代码。

如果此时我想对实体进行更改(如添加/删除属性、关系),我将在哪里进行这些更改:

  • xcdatamodeld (xcdatamodel) 文件中,
  • 在我的自定义 NSManagedObject 子类中,
  • xcdatamodeld (xcdatamodel) 文件和我的自定义 NSManagedObject 子类?

那么,NSManagedObject 子类和 xcdatamodeld 文件有什么关系呢?
我必须保持这两个元素同步吗?

【问题讨论】:

    标签: objective-c cocoa core-data nsmanagedobject nsmanagedobjectmodel


    【解决方案1】:

    xcdatamodeld 规则 :) 或更具体地说,生成的托管模型。 无论是否存在都将决定商店结构。

    所以...
    您首先在模型文件中进行更改。
    这将使您能够将这些更改回显到托管对象子类。
    这对于添加不是强制性的,但我认为对于删除属性/关系是强制性的(未测试)。

    如果您有自定义代码,我建议您将其添加到托管对象子类之上的类别中,因为这样可以让您在更改模型文件时轻松重新生成类接口。

    【讨论】:

    • 谢谢。我喜欢这个类别的想法!我仍然没有完全理解托管模型和 NSManagedObject 子类是如何相关的……
    • 模型正在创建一个专门的对象(一个托管对象)来处理模型中描述的规范。此对象由 CoreData 优化。当您对托管对象进行子类化时,您必须以不与模型相矛盾的方式进行操作,并允许模型自己实现核心组件。一般来说,模型是托管对象子类的蓝图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多