19

Swift 3 と Xcode 8 ベータ版でコア データを使用することを試み始めました。コア データ モデルから NSManagedObject サブクラスを生成し、[エディター] メニューで [NSManagedObject サブクラスを作成] オプションを選択すると、Xcode 8 ベータ版は 3 つのファイルを生成します

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

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

ありがとう

4

3 に答える 3

44

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

ドキュメントから(What's New In Core Data)

Xcode 自動サブクラス生成

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

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

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

于 2016-06-19T09:04:17.500 に答える
0

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

于 2016-06-28T07:39:19.733 に答える
0

上記の .swift ファイルで問題が発生し、___COREDATA... 行をコメントアウトすると、今のところエラーが発生することがわかりました。それが何を達成することになっているのかわかりません。

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

それ以外では、XCODE 8 は 25 のデータ エンティティと 30 を超えるビュー コントローラーを備えたアプリで驚くほど安定して動作しているので、不満はありません。

于 2016-06-28T22:42:17.557 に答える