web-dev-qa-db-ja.com

NSManagedObjectのサブクラス化Swift 3およびXcode 8ベータ版

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___'

誰もが同じ問題に直面していますか?この新しいファイルの意味はどれですか?

ありがとう

19
RFG

おそらく、新しい自動サブクラス生成との(ベータ)衝突であり、データモデルファイルのエンティティインスペクターで制御できます。

ドキュメント(コアデータの新機能) から

Xcodeの自動サブクラス生成

Xcodeは、モデリングツールでNSManagedObjectサブクラスの自動生成をサポートするようになりました。エンティティインスペクターで:

  • Manual/Noneはデフォルトで、以前の動作です。この場合、独自のサブクラスを実装するか、NSManagedObjectを使用する必要があります。
  • Category/Extensionは、ClassName+CoreDataGeneratedPropertiesなどの名前のファイルにクラス拡張を生成します。メインクラスを宣言/実装する必要があります(Obj-Cの場合、ヘッダーを介して拡張機能はClassName.hという名前をインポートできます)。 -
  • クラス定義は、ClassName+CoreDataClassなどの名前のサブクラスファイルと、カテゴリ/拡張用に生成されたファイルを生成します。

生成されたファイルはDerivedDataに配置され、モデルが保存された後の最初のビルドで再構築されます。また、Xcodeによってインデックスが作成されるため、コマンドキーを押しながら参照をクリックし、ファイル名ですばやく開くことができます。

44
vadian

上記の.Swiftファイルで問題が発生しましたが、今のところ___ COREDATA ...行をコメントアウトするとエラーが発生することがわかりました。私はそれが何を成し遂げるべきなのか分かりません。

また、XCODE 8にはCoreDataエンティティに追加された新しいフィールドを忘れ、CoreDataモデルコード生成ターゲットをObjective Cに繰り返しリセットする傾向があり、=の代わりに.hおよび.mファイルが急増する傾向があることもわかりました。 Swiftファイルがファイルを再生成するとき。私が見た問題のほとんどはCoreDataに関連していましたが、今のところ実行可能です。

それ以外は、XCODE 8は25個のデータエンティティと30個以上のView Controllerを備えたアプリで驚くほど安定して動作しているので、文句は言いません。

0
Ron Diel

この開発者ベータXcode 8にも同様の問題があります。それらのいくつかは、Data Modelを終了する前またはNSManagedObjectサブクラスを生成する前にCommand + S(変更を保存)を解決しました。理由はわかりませんが、私の場合、自動保存が時々機能せず、いくつかのエラーが発生します。

0
Adam Smaka