2017-01-27 5 views
5

版 - >作成NSManagedObjectサブクラスを使用してXcode 8でエンティティのNSManagedObjectクラスを作成しました。それは+CoreDataPropertiesの拡張子と+CoreDataClass拡張子の2つのファイルを作成します。エラーを示すXcode 8.1でNSManagedObjectクラスを作成します。

これらのファイルを追加した後、エラーリンカコマンドがを失敗した取得していますし、そのは、重複したファイルを示す...私はCoreDataClass.mファイルを削除すると、ファイルがファインダー上だけでなく、Xcodeの

に2回追加されているかどうかをチェックしていますエラーがなくてもアプリケーションがクラッシュしているソースをコンパイルしています。エンティティクラスのプロパティにアクセスできません。これを解決するには?

答えて

2

NSManagedObjectを作成するときは、CodegenManual/Noneであることを確認してください。

クラスの下でデータモデルインスペクター(右側)にごエンティティを、選択して、あなたのNSManagedObjectを作成し、その後Manual/Noneにごcodegenのを変更。

NSManagedObjectが既に作成されていて、重複ファイルのエラーが既に表示されている場合は、派生データを削除します(ファイル - >ワークスペース設定 - >派生データフォルダリンクをクリックします)。上記のようにNSManagedObjectを作成します。

大会、そしてより一般的なアプローチにより、3.2

スウィフト

+0

CodegenをManual/Noneに変更すると、私の問題は解決しますが、その必要性は何ですか? –

0

はい。 Xcode 8.0以降では、独自のコアデータエンティティ用のクラスファイルを作成するようになりました。追加機能を追加する場合は、このクラスの拡張機能を追加できます。

これは、クラスクリーンプロジェクトを削除するだけです(問題が解決しない場合はXcodeを再起動することがあります)。

0

、あなたは、あなたが手動で同じ名前のクラスに名前を付けるために(再び、より一般的なNSManagedObjectのサブクラスを作成し、エンティティinspecterでコード生成でカテゴリ/拡張を生成する必要がありますあなたがエンティティのクラス/拡張を必要とする理由は、あなたのエンティティ属性をvarsとして扱うほうが簡単であり、値を使うのと同じように "手作業"ではありません(forKey : "")Any ?, 日付または文字列に "そのまま"使用しても、このテクニックで日付を保存する場合は、 スウィフトは強く参照されていないため、それが私たちが欲しい理由ですidを可能な限りAnyを使用

関連する問題