質問: お時間を割いていただき、ありがとうございます。 一から勉強させてください 現在、こちらのサイトを参考に、CoreData,Swiftを用いたToDoアプリを作成しているのですが、これに加えて、例えば「家事」「仕事」「趣味」などという分類をし、ボタン一つでそれぞれの分類ごとに表示させるにはどうすればいいのでしょうか? Entityレベルで分類するのか、Attributesレベルで分けるのか、教えていただきたいと思います。 すごく初歩的な質問だとは思いますが、よろしくお願いいたします。
回答: ケースバイケースですが、1つのTodoに複数の分類が与えられることが考えられるので、`Category`というEntityを新しく作成して、Todoの関連に持たせるのがよくある構成だと思います。 もちろん、分類は必ず1つのみ、という仕様にするならば、`Todo`のAttributesとして`category`という文字列を持つだけでも良いです。若干シンプルになります。 ただまあ、Attributesにした後で、やっぱり複数の分類にしたい、ということなどのよくあるので、私ならたいていは最初から`Category`というEntityを作る設計にします。 CoreDataを使う場合は、関連のEntityに対して検索条件をつけるのも、Attributesを条件にするのもほとんど書き方が変わらないので、それならば柔軟な設計にしておいたほうが良い場合が多いです。 実際のクラスは例えば次のようになると思います。 ``` class Todos: NSManagedObject { @NSManaged var content: String @NSManaged var categories: NSSet } class Category: NSManagedObject { @NSManaged var name: String @NSManaged var todo: Todos } ```