2016-11-02 12 views
0

私は最近、CoreDataとその機能を試したかったので、簡単なチュートリアルを見つけました。それに続いて、エンティティとリレーションシップを持つ.xcdatamodeldファイルを作成しました。私が今やりたいことSwift CoreData NSManagedObjectサブクラス

は、私は私のモデルファイルを開くこのため

(Xcodeのバージョン8.1(8B62)とXcodeバージョン8.2ベータ(8C23)でみました)クラスにそれを有効にすることです、クリックエディタ - >NSManagedObjectサブクラスを作成します。 これを行い、2つのエンティティを選択すると、4つのクラス、2つのNSManagedObjectクラス、それぞれに1つの拡張が生成されます。

これらの4つのファイルを追加したり、むしろ生成した後、Xcodeはプロジェクトをコンパイルし、次のエラー出しません。

Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1

をし、時にはそれも書かれています:Invalid redeclaration of [Managed Object Name]

任意の洞察力です私はモデルを使わずに自分でクラスを作成すべきですか?またはCoreDataはObjcで動作しますか?

答えて

3

Xcode 8では、自動コアデータサブクラス生成のサポートが追加されています。これについては、What's New in Core Data in macOS 10.12, iOS 10.0, tvOS 10.0, and watchOS 3.0でお読みください。新しいプロジェクトで自動コード生成が有効になっているため、NSManagedObjectサブクラスを手動で作成したときに重複が作成され、コンパイラエラーが発生します。

これを解決するには2通りの方法があります。まず、手動で作成したNSManagedObjectサブクラスを削除することができます。次に、Code ModelメニューからManual/Noneを選択して、データモデルインスペクタからデータモデルの自動コード生成をオフにすることができます。チュートリアルに従っている場合は、Appleが自動コアデータサブクラスの生成を追加する前にチュートリアルが書かれている可能性が高いため、2番目のオプションをお勧めします。

enter image description here

+0

ああ、Xcodeのは、自動的にあなたがモデルで定義された内容に基づいて、隠れスウィフトのクラスを作成しますので、?だから私はまだコードで使用することができますが、私には示されていませんか? – xCoder

+0

あなたの質問に対する私の推測はYesですが、私は自動サブクラス生成を使用していません。私が答えの最後に言ったように、チュートリアルに従っているなら、自動サブクラス生成をオフにする必要があります。 –

関連する問題