web-dev-qa-db-ja.com

CoreDataクラスの無効な再宣言

「RoleName」というエンティティでCoreDataを使用しています。

問題は、モデル内から[NSManagedObjectサブクラスの作成]をクリックすると、エンティティのクラスが自動的に作成されることです。

ただし、クラスの宣言では、次のエラーが表示されます。

「RoleName」の無効な再宣言

同じ名前の他のクラスはありませんが。

37
dpstart

これは、Xcodeがそれ自体をすべて処理するためです。自動生成されたクラスがすべてのプロパティを持っているわけではないので、ちょっとしたトラブルのように感じました。

したがって、次の手順を実行して、これを取得します。

  • コアデータ用に既に作成したクラスを削除します。
  • Class.Moduleを現在の製品モジュールとして設定 enter image description here

  • Class.codegenをManual/Noneに設定します

enter image description here

  • エンティティを選択し、NSmanagedobjectサブクラスを作成します enter image description here

  • 準備万端です

126
Deepukjayan

From Apple: Core Dataの新機能

Xcodeの自動サブクラス生成

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

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

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

NSManagedObjectsのサブクラスを手動で作成する必要はありません。

NSManagedObjects(ゴミ箱に移動)で作成したファイルを削除し、DataModel InspectorのCodegen selectの下にあるすべてのエンティティに移動することをお勧めします:Manual / Noneおよびサブクラスよりも作成します。

14
FBC