我从编码中休息了几个月,然后回过头来发现CoreData与Xcode8/iOS10/macOS Sierra的变化。为Xcode 8更新Objective C项目的正确方法核心数据NSManagedObject子类更改
我一直在试图让我的头在目标C中的新NSManagedObject子类生成,但网络上有很少。我有几件事我之前,我开始屠杀我的项目,完全,但第一搞乱事情需要澄清,有些事情我已经从闲逛发现,可能是其他人在那里有用...
东西在哪里是
自动生成的文件深藏在DerivedData文件夹中。查看USER-> Library-> Developer-> Xcode-> DerivedData-> ProjectName-lotsOfRandomLetters-> Build然后继续打开文件夹,直到找到DerivedSources-> CoreDataGenerated。
自动生成的文件不会出现在您的项目文件夹或导航器中,但如果在一个Xcode中出现错误,则会为您显示源代码。
事情Xcode中产生
有三种代码生成设置 - 手动/无,类定义和类别/扩展。
当实体CODEGEN被设置为手动/无(这是旧的行为)创建一个使用编辑器 - >创建NSManagedObject子类生成您的项目中的4个文件...
实体+ CoreDataClass.h的NSmanagedObject子和实体+ CoreDataClass.m和 实体+ CoreDataProperties.h和实体+ CoreDataProperties.m
(先前版本的Xcode 7产生Entity.h,Entity.m, 实体+ CoreDataProperties.h和实体+ CoreDataProperties.m文件)
如果e ntity的codegen被设置为类定义,Xcode会在派生的数据文件夹中自动生成这4个相同的文件 - 不是项目,然后这些文件会标注一条评论,告诉您不要更改它们。
如果实体codegen设置为Category/Extension,Xcode将生成2个文件。这些文件标有评论,告诉你不要改变它们。这是...
实体+ CoreDataProperties.h和实体+ CoreDataProperties.m
这2档期待一个Entity.h文件要在项目,如果没有将显示一个错误在Xcode。这是您能够在Xcode中查看其中一个文件的源代码的一次。
什么在这些文件
的+ CoreDataProperties文件显示为的Xcode那些产生先前版本生成的文件除了一个除了是相同的。它们包含实体/ NSmanagedObject的所有属性/属性以及处理具有一对多或多对多关系的实体的方法。新增功能是fetchRequest子类NSmanageObject的新fetchRequest方法的一种方法。
问题
1)是类定义现在的代码生成时,你没有任何额外的性能/功能添加到NSManagedObject子类,因为它会自动更新的文件,你的明显,最好的选择(当你用cmd-s保存项目)?
2)使用+ CoreDataClass命名文件遵循类的约定,这意味着应该有一个类作为它的扩展。
我是否正确地假设Entity + CoreDateClass.h/m文件是旧的Entity.h/m文件的直接替换?并且它不是一个类别,尽管文件名?
3)对于新的NSManagedObject子类,我应该导入Entity + CoreDataClass.h而不是Entity.h?
4)如果我想删除我的大多数NSManagedObject子类的文件整齐我的项目,我不只是删除在Xcode的文件和设置或CODEGEN类定义实体...
是有魔力下当您尝试#import entity.h时,会寻找实体+ CoreDataClass的引擎盖,或者我将不得不经过并找到#import entity.h的每个引用并将它们更改为#import entity + CoreDataClass.h?
5)我的权利假设,如果我想要一个NSManagedObject的子类,我想添加一个属性和一个方法,我应该设置Codegen到类别/扩展?如果我选择类别/扩展我必须创建我自己的NSmanagedObject子类文件,其只是entity.h不是实体+ CoreDataClass.h? 7)如果entity + CoreDataClass.h是entity.h文件新接受的命名格式,为什么生成的Category/Extension文件寻找一个普通的entity.h名称文件而不是实体+ CoreDataClass.h文件?这只是苹果部分的一个不一致之处,我应该接受或者我错过了我应该知道的东西?
谢谢。
找到一些答案加上相应的WWDC视频的链接[这里](http://stackoverflow.com/a/39933534/1457385)。 – shallowThought