Xcode8/iOS10/macOS Sierraを使用して数ヶ月間コーディングを中断し、CoreDataの変更を発見しました。Objective CプロジェクトをXcode 8コアデータ用に更新する正しい方法NSManagedObjectサブクラスの変更
私はObjective Cの新しいNSManagedObjectサブクラス世代について頭を尽くそうとしていましたが、ウェブ上にはほとんどアウトがありません。私は私が私のプロジェクトを解体して、物事をめちゃくちゃに完全けど最初に起動する前に、そこに他の人アウトに役に立つかもしれない、私は周りのを突っついから発見したいくつかのことを明確化する必要があるいくつかのものを持っている...
ものare
自動的に生成されたファイルは、DerivedDataフォルダに深く埋め込まれています。 USER-> Library-> Developer-> Xcode-> DerivedData-> ProjectName-lotsOfRandomLetters-> Buildを開き、DerivedSources-> CoreDataGeneratedが見つかるまでフォルダを開いたままにしておきます。
自動的に生成されたファイルは、プロジェクトフォルダまたはナビゲータに表示されませんが、エラーがある場合は、Xcodeによってソースが表示されます。マニュアル/なし、クラス定義、およびカテゴリ/拡張 -
物事Xcodeは
3つのコード生成の設定がありますが生成されます。
エンティティはcodegenをEditorのを使用してNSmanagedObjectサブクラスを作成する(古い動作でした)マニュアル/ noneに設定されている> NSManagedObjectサブクラスは、プロジェクト内の4つのファイルを生成します作成...
エンティティ+ CoreDataClass.hそして、エンティティ+ CoreDataClass.mと エンティティ+ CoreDataProperties.hとエンティティ+ CoreDataProperties.m
(以前のバージョンのXcode 7はEntity.h、Entity.m、 エンティティ+ CoreDataProperties.hとエンティティ+ CoreDataProperties.mファイルを生成しました)
e ntityのcodegenがClass Definitionに設定されている場合、Xcodeはこれらの4つのファイルをプロジェクトではなく派生データフォルダに自動的に生成します。これらのファイルには、変更しないようにコメントが表示されます。
エンティティcodegenがカテゴリ/拡張に設定されている場合、Xcodeは2つのファイルを生成します。これらのファイルには、変更しないことを示すコメントが付けられています。これらは...
エンティティ+ CoreDataProperties.hとエンティティ+ CoreDataProperties.m
これらの2ファイルがプロジェクトになるようにEntity.hファイルを期待しているされており、不在ならばXcodeでエラーが表示されます。 Xcode内でこれらのファイルのいずれかのソースを見ることができるのはこれだけです。
これらのファイルに
+ CoreDataPropertiesファイルはXcodeののものを生成し、以前のバージョンと同じように見えるいただきましたが1件の追加を除いたファイルを生成しました。それらには、エンティティ/ NSmanagedObjectのすべての属性/プロパティと、1対多または多対多の関係を持つエンティティを処理するメソッドが含まれています。新しい追加はNSmanageObjectの新しいfetchRequestメソッドをサブクラス化するfetchRequestのメソッドです。
質問
1)は、今では自動的にファイルを更新してあなたは、NSManagedObjectのサブクラスに追加する余分な性質/機能を持っていないコード生成のための明白かつ最良の選択クラス定義です(cmd-sでプロジェクトを保存するとき)?
2)+ CoreDataClassを使用したファイルの名前付けは、クラスのカテゴリの規則に従います。これは、これを拡張子にするクラスが必要であることを意味します。
私は、Entity + CoreDateClass .h/mファイルが古いEntity.h/mファイルをまっすぐに置き換えていると仮定していますか?ファイル名にもかかわらず、実際にはカテゴリではないのでしょうか?
3)新しいNSManagedObjectサブクラスについては、Entity.hではなくEntity + CoreDataClass.hをインポートする必要がありますか?
4)私はNSManagedObjectのサブクラスファイルのほとんどを除去することによって、自分のプロジェクトを整理整頓したい場合は、私はちょうどXcodeでファイルを削除し、クラス定義や...
にcodegenをエンティティを設定するのですが下の魔法があります#import entity.hを試すときエンティティ+ CoreDataClassを探すフード、または#import entity.hへのすべての参照を見つけて#import entity + CoreDataClass.hに変更する必要がありますか?
5)私は、NSManagedObjectサブクラスでプロパティとメソッドを追加したい場合は、codegenをCategory/Extensionに設定する必要があると仮定しますか?
6)カテゴリ/エクステンションを選択した場合、独自のNSmanagedObjectサブクラスファイルを作成する必要があります。そのentity.hはentity + CoreDataClass.hではありませんか?
7)entity + CoreDataClass.hがentity.hファイルの新しい受け入れられた命名形式である場合、生成されたCategory/Extensionファイルは、エンティティ+ CoreDataClass.hファイルの代わりにプレーンなentity.h名前ファイルを探すのはなぜですか?これはちょうど私が知るべきである何かを逃しているか、私が受け入れるべきであるか何かのApplesの部分にちょうど矛盾ですか?
ありがとうございます。
答えのいくつか、対応するWWDCビデオ[ここ](http://stackoverflow.com/a/39933534/1457385)へのリンクを検索してください。 – shallowThought