代码之家  ›  专栏  ›  技术社区  ›  K. Shores

向XCode 10核心数据生成文件添加方法

  •  0
  • K. Shores  · 技术社区  · 6 年前

    这个问题可能在其他地方有答案,但我只找到了过时版本的Xcode或使用Swift的项目的答案。

    我正在使用Xcode 10并阅读 iOS编程大书呆子牧场指南,第4版 . 我使用这样一个老版本,因为这是我的工作提供给我的资源。

    目前,我正在尝试向Objective-C的CoreData生成类添加一个方法。

    当CodeGen设置为Category/Extension且CoreData中选择了my entity时,生成的类文件是:

    • BNRItem+CoreDataProperties.h/m
    • BNRItem+CoreDataClass.h/m

    BNRItem+CoreDataClass.h 包括 BNRItem+CoreDataProperties.h ,和 BNRItem+CoreDataProperties.h文件 包括 BNRItem.h (不存在)。我想我需要创造 B标准h 但我不知道要导入什么文件 B标准h 从那以后 BNRItem+CoreDataProperties.h文件 BNRItem+CoreDataClass.h 似乎创建了一个循环包含循环。

    我应该在哪个文件中将实例方法添加到Xcode 10中为Objective-C生成的CoreData类中?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jerry Krinock    6 年前

    惯例是 @class .h 文件和 #import .m 文件,除非 #进口 是必要的 .h.小时 文件。后者在引用超类或协议时发生。

    其目的是加速重新编译。如果 ClassA.h 进口 ClassB.m ,而你只会改变 B.m类 在开发过程中,因为 ClassA.m 进口 甲级 进口的 B.m类 , 甲级 将需要在下一次生成期间重新编译,即使它没有更改。

    当然,所有这些都会很快消失:)

        2
  •  0
  •   K. Shores    6 年前

    这可能不是实际的答案,但我通过将CodeGen更改为Manual/None并编辑它生成的文件来解决了这个问题。

        3
  •  0
  •   tdimeco    6 年前

    把代码生成选项留给 Class Definition 创建实体的扩展(Objective-C中的一个类别)?

        4
  •  0
  •   Inder Kumar Rathore user4622654    6 年前

    这个 #import 语句用于解决 #include . 所以如果你使用 #进口 ,但如果你仍然担心,你也可以使用 @class 远期申报

        5
  •  0
  •   H. de Jonge    5 年前

    这一直是我的奋斗,但刚才我遇到了 this Apple article .

    第二种方式,就是你想用的方式。意外的步骤是将属性文件移到垃圾箱中。事实上 <class>+CoreDataClass 文件必须重命名为 <class>.h .m . 之后,可以使用这些文件来扩展类,并继续生成属性文件。

    因此,创建托管对象类的步骤如下:

    • 在实体的数据模型检查器中选择“类别/扩展”。
    • 生成您的类 Editor > Create NSManagedObject Subclass... 菜单。
    • 移动创建的 <class>+CoreDataProperties.h .m.公司 文件夹。
    • 附加步骤:如前所述重命名数据类文件。
    推荐文章