2016-07-23 10 views
1

と互換性があるように私はいくつかのCoreDataチュートリアルやAppleのドキュメントを読んで、私はまだ一つ見つかっていない。完全にカスタムクラスでCoreDataを統合する方法を。適応カスタムクラスはCoreData

は、私は、カスタムクラスDogを持っていると私は、プロジェクトを作成するときに「CoreDataを含める」にチェックを言います。

犬はnamelegsNumberのようなカップルのプロパティと例.Vaccinated.NotVaccinatedvaccinationStatusのようないくつか列挙型を持っています。私は唯一の方法を理解して何から

は、新しいファイルを作成し、コードを適応させることです。 NSManagedObjectサブクラスを作成し、.xdatamodeldファイルからエンティティ(この場合はDog)に割り当てる必要があります。次に、2つのファイルDog+CoreDataProperties.swiftDog.swiftを作成します。

Dog+CoreDataProperties.swiftに、@NSManaged var name: StringlegsNumberのような犬にしたいプロパティを追加する必要がありますが、enumについてはどうですか?

このようにすることはできますか?

@NSManaged enum VaccinationStatus { 
    case Vaccinated 
    case NotVaccinated 
    } 

プロパティ内に別のクラスを追加できますか?と並んで、各犬の服のブランド名と価格を言う(ちょっと極端だが、私が意味することを理解している)。または、別のエンティティを追加して別のNSManagedObjectファイルを作成し、NSManagedプロパティを追加する必要がありますか?

答えて

1

一般的には、モデルを作成し、そこにすべてのあなたの属性を追加して、Xcodeはあなたのためのコードを生成します。あなたの列挙では、(列挙型の種類に応じて)モデルに整数またはブール型を使用します。

Xcodeで生成されたクラスでは、エンティティのデータを公開し、そのデータの変更を任意の方法で可能にする追加機能を追加できます。Xcodeが生成するセッターとゲッターを必ず呼び出してください。

だからクラスで、あなたの列挙を定義し、列挙を設定および取得するための機能を追加し、それは沸騰に供給された列挙を変換し、エンティティに保管されますよ。列挙型の生の値を使用して、役立てることができます。

また、保存する方法と時期を考慮する必要があります。

+0

いくつかのコードを入力してください。私は研究を続けましたが、私はまだ私が望むものを見つけていません。私は、属性 'name'と' dateOfBirth'(StringとDate)を持つエンティティ 'EmployeeEntity'を持っているとしましょう。各従業員は、達成するためのタスクを持つことができます。だから、それは属性 'taskName'と' taskStatusValue'を持つ別のエンティティ 'TaskEntity'でしょうか?そして 'EmployeeEntity'と' employee'の関係を 'TaskEntity'との関係で' tasks'を追加しますか?そして、両方のエンティティのファイルを作成する必要がありますか?私は基本的に最終結果が 'employee.task [0] .status'にアクセスすることを望んでいます。ロジックは正しいですか? – Lawrence413

+0

そして、私はTask.swift' 'でhttp://www.jessesquires.com/better-coredata-models-in-swift/(列挙型のセクションで)このチュートリアルのコードを追加した場合、私のことができるようにするつもりです'employee.task [0] .status'にアクセスしますか? – Lawrence413

+0

はい、あなたのロジックは良いと思います。私は参照するチュートリアルを見る時間がなかった – Wain

関連する問題