私は質問と質問タイプの2つのコアデータエンティティを持っています。すべての質問には、正確に1つのQuestionTypeがあります。コアデータエンティティを列挙型として使用していますか?
QuestionTypeには、typeName文字列属性があります。これは主にどの質問タイプであるかを特定する方法です。これは、いくつかの異なるタイプのリストに固定されています。列挙型としてデータ内のすべてのQuestionTypeのリストを使用できるかどうか、またはそうでない場合、このリストを使用してQuestionTypeを質問に割り当て、後でQuestionTypeをチェックする最良の方法は何か?私は(型名を知るに基づく)の質問にタイプを割り当てたいとき、私はこれをやっている現在
、:これは多くの作業のように思える
NSFetchRequest *questionTypeFetchRequest = [[NSFetchRequest alloc] init];
questionTypeFetchRequest.entity = [NSEntityDescription entityForName:@"QuestionType" inManagedObjectContext:self.managedObjectContext];
NSPredicate *questionTypePredicate = [NSPredicate predicateWithFormat:@"typeName like %@", [questionData objectForKey:@"questionType"]];
questionTypeFetchRequest.predicate = questionTypePredicate;
question.questionType = [[self.managedObjectContext executeFetchRequest:questionTypeFetchRequest error:&error] objectAtIndex:0];
がちょうどにQuestionTypeを割り当てるために、私の質問!そして私は他の同様のエンティティに対してこれを繰り返さなければなりません。
そして、私は後でQuestionTypeを確認したいときに、私がやっている:
if ([question.questionType.typeName isEqualToString:@"text"]){
これは正常に動作しますが、私は私が探しています特定のQuestionTypeにquestion.questionTypeを比較する必要があるように私は感じますこれは、typeNameを単に比較するのとは対照的です。
は、私はこれを行うことができるように、私のQuestionTypesを保持するために、列挙型を設定する方法はあります:
question.questionType = Text;
switch(question.questionType)
{
case Text:
ありがとうございます! Enum構文を修正するために更新されました。可能なquestionTypesのリストは、再コンパイル以外の手段で更新できる必要があり、typeName以外のプロパティも保持できるため、managedObjectである必要があります。しかし、私は静的な辞書が私に欲しいものを私に与えると信じています。 – GendoIkari
これは問題を実現しました...これはquestionTypeを設定するためにはうまくいきますが、それを比較するためにはうまくいかないと思います。 question.questionTypeは、辞書にある質問タイプと同じオブジェクトではありません。 CoreDataからフェッチされた新しいオブジェクトになるためです。何らかの並べ替えを実装できますか?typeNameのメソッドをtrueに戻すメソッドは同じですか? – GendoIkari
私はそれがデータベースの1つのエントリが 'MOC'の中に1つの' NSManagedObject'によって表されることを保証していると信じています。もちろん、同じ 'typeName'を持つ複数の' QuestionType'がある場合、それらは複数のオブジェクトとしてカウントされます。しかし、複数を作成すべきではありません。ユニークであることを常に保証する必要があります。 – Yuji