Swift 3およびXcode 8ベータ版でコアデータを使用しようとしました。コアデータモデルからNSManagedObjectサブクラスを生成し、エディタメニューのNSManagedObjectサブクラスを作成...オプション、Xcode 8ベータ版3つのファイルを生成します。そのうちの1つは_ COREDATA_DATAMODELNAME _ + CoreDataModel.Swiftで、次の内容が含まれます。
import Foundation
import CoreData
___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___
さらに、このファイルの内容には2つの警告が表示されます。
Expressions are not allowed at the top level.
Use of unresolved identifier '___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___'
誰もが同じ問題に直面していますか?この新しいファイルの意味はどれですか?
ありがとう
おそらく、新しい自動サブクラス生成との(ベータ)衝突であり、データモデルファイルのエンティティインスペクターで制御できます。
Xcodeの自動サブクラス生成
Xcodeは、モデリングツールで
NSManagedObject
サブクラスの自動生成をサポートするようになりました。エンティティインスペクターで:
- Manual/Noneはデフォルトで、以前の動作です。この場合、独自のサブクラスを実装するか、
NSManagedObject
を使用する必要があります。- Category/Extensionは、
ClassName+CoreDataGeneratedProperties
などの名前のファイルにクラス拡張を生成します。メインクラスを宣言/実装する必要があります(Obj-Cの場合、ヘッダーを介して拡張機能はClassName.hという名前をインポートできます)。 -- クラス定義は、
ClassName+CoreDataClass
などの名前のサブクラスファイルと、カテゴリ/拡張用に生成されたファイルを生成します。生成されたファイルはDerivedDataに配置され、モデルが保存された後の最初のビルドで再構築されます。また、Xcodeによってインデックスが作成されるため、コマンドキーを押しながら参照をクリックし、ファイル名ですばやく開くことができます。
上記の.Swiftファイルで問題が発生しましたが、今のところ___ COREDATA ...行をコメントアウトするとエラーが発生することがわかりました。私はそれが何を成し遂げるべきなのか分かりません。
また、XCODE 8にはCoreDataエンティティに追加された新しいフィールドを忘れ、CoreDataモデルコード生成ターゲットをObjective Cに繰り返しリセットする傾向があり、=の代わりに.hおよび.mファイルが急増する傾向があることもわかりました。 Swiftファイルがファイルを再生成するとき。私が見た問題のほとんどはCoreDataに関連していましたが、今のところ実行可能です。
それ以外は、XCODE 8は25個のデータエンティティと30個以上のView Controllerを備えたアプリで驚くほど安定して動作しているので、文句は言いません。
この開発者ベータXcode 8にも同様の問題があります。それらのいくつかは、Data Modelを終了する前またはNSManagedObjectサブクラスを生成する前にCommand + S(変更を保存)を解決しました。理由はわかりませんが、私の場合、自動保存が時々機能せず、いくつかのエラーが発生します。