我從編碼中休息了幾個月,然後回過頭來發現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