2014-04-17 47 views
1

我正在製作一個包含不同類型測驗的iOS應用程序,所有問題和答案選項都存儲在CoreData中。在多對多關係中分配數據

我創建了兩個實體,一個叫QuestionData具有屬性,如'問題「ANSWER1」(意思是,答案選1),「ANSWER2」等,然後另一實體,稱爲測驗,與像屬性'name'和'quizId',我在Quiz上創建了一個名爲'dataData'的一對多關係,它將引用所有問題/答案等。

當我創建了一些測試數據(試驗關係)時,我首先創建了questionData,然後設置測驗的名稱和ID,然後我嘗試設置這樣的關係中的數據,

[quizInfo setValue:questionData forKey:@"quizData"]; 

本應該存儲/設置Quiz實體的quizData鍵中的所有問題/答案。但是,我得到了這個不可接受的類型錯誤,告訴我它'期望'NSSet,但我反而給它一種QuestionData

'NSInvalidArgumentException', reason: 'Unacceptable type of value for to-many relationship: property = "quizData"; desired type = NSSet; given type = QuestionData; value = <QuestionData: 0x89447a0> (entity: QuestionData; id: 0x8919900 <x-coredata:///QuestionData/t6B583F60-5794-47FA-8A51- 

我理解的概念,「設置」但是,我不知道我怎樣才能使questionData一組,當談到時間來做到這一點

[quizInfo setValue:questionData forKey:@"quizData"]; 

全碼:

NSManagedObjectContext *context = [self managedObjectContext]; 
    QuestionData *questionData = [NSEntityDescription 
           insertNewObjectForEntityForName:@"Questiondata" 
           inManagedObjectContext:context]; 
    [questionData setValue:@"do you like big basketballs" forKey:@"question"]; 
    [questionData setValue:@"yes" forKey:@"answer1"]; 
    [questionData setValue:@"no" forKey:@"answer2"]; 
    [questionData setValue:@"maybe" forKey:@"answer3"]; 
    [questionData setValue:@"maybe" forKey:@"correctAnswer"]; 

    Quiz *quizInfo = [NSEntityDescription 
            insertNewObjectForEntityForName:@"Quiz" 
            inManagedObjectContext:context]; 
    [quizInfo setValue:@"1" forKey:@"quizId"]; 
    [quizInfo setValue:@"sportsquiz" forKey:@"name"]; 
    [quizInfo setValue:questionData forKey:@"quizData"]; 

回答

2

你需要將你的questionData包裝在一個集合中。既然你只有一個問題,在這個時候,你可以使用

[quizInfo setValue:[NSSet setWithObject:questionData] forKey:@"quizData"]; 

當你有一個以上的問題,你可以使用:

[quizInfo setValue:[NSSet setWithObjects:question1Data,question2Data,question3Data,nil] forKey:@"quizData"]; 

或者你可以把你的問題變成一個NSMutableArray和使用

[quizInfo setValue:[NSSet setWithArray:questionArray] forKey:@"quizData"]; 
+0

好的謝謝你把錯誤的地方,我認爲 – BrainLikeADullPencil

+0

哎呀。修正了:) – Paulw11