我有2個核心數據實體:Question和QuestionType。每個問題都有1個QuestionType。使用核心數據實體作爲枚舉?
QuestionType具有typeName字符串屬性;這主要是我如何確定它是哪個QuestionType。它被固定到幾個不同類型的列表。我想知道是否可以使用數據中所有QuestionType的列表作爲枚舉,或者如果不可以,使用此列表將QuestionType指定給問題的最佳方法是什麼,並在稍後檢查QuestionType?
目前,當我想以一個類型分配給一個問題(基於瞭解的typeName),我這樣做:
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"]){
這工作得很好,但我覺得我應該在question.questionType進行比較,我要找的具體QuestionType ,而不僅僅是比較typeName。
有什麼辦法來建立一個枚舉持本人QuestionTypes,這樣我可以做到這一點:
question.questionType = Text;
switch(question.questionType)
{
case Text:
謝謝!已更新以修復Enum語法。它需要成爲managedObject,因爲可能的questionTypes列表應該能夠通過重新編譯以外的其他方式進行更新,並且因爲它可能包含typeName以外的其他屬性。但我相信靜態字典會給我我想要的。 – GendoIkari 2010-12-03 14:34:56