2011-03-25 121 views
1

我正在編寫一個應用程序,允許用戶創建一個「調查問卷」,然後向其中添加問題。我正在使用核心數據來存儲信息。我創建了一個問卷實體,並與問題實體具有「一對多」關係。我的問題是,如果想讓用戶複製(複製)整個問卷,問題和所有最好的方法是什麼?複製(複製)核心數據記錄和相關記錄

所以要明確:

我:

問卷紀錄--->問題1紀錄 - 問題2紀錄 - 第3題記錄

和我想要的用戶能夠複製這個並以此結束:

問卷記錄---> Quest離子1個紀錄 - 問題2紀錄 - 第3題記錄

問卷(複印)記錄--->問題1紀錄 - 問題2紀錄 - 第3題記錄

回答

1

你說你要複製一個完整的調查問卷,所以假設你想要的其實是這樣的:

問卷--->問題1 - 問題2 - 問題3

問卷(複印)--->問題1(副本) - 問題2(複製) - 問題3(複製)

然後你需要的是一個深層複製。您可以根據this NSManagedObject category編寫一些內容,假設您在數據模型上正確設置了關係的所有權規則。

+0

是的,這就是我一直在尋找的!謝謝! – Vic320 2011-03-26 15:04:46

+0

沒有問題。不要忘記接受答案:) – 2011-03-26 16:03:47

1

您只需插入一個新的管理對象,然後將所有它的值與原始對象相同。如果您使用的是你的管理對象專門的子類,你甚至可以寫一個簡單的輔助方法(例如假設名爲問卷管理對象,相應地更改):

-(Questionnaire*)copyQuestionnaire 
{ 
    NSManagedObjectContext* ctx = [self managedObjectContext]; 
    // Obviously use the correct entity name... 
    Questionnaire* newCopy = [NSEntityDescription insertNewObjectForEntityForName:@"Questionnaire" inManagedObjectContext:ctx]; 
    // Now just copy your properties, for this example we'll assume 
    // a simple relationship called 'questions' 
    [newCopy setQuestions:[self questions]]; 

    // We return a retained copy since our method name starts 
    // with 'copy' 
    return [newCopy retain]; 
}