2012-03-11 38 views
0

我已經創建了兩個實體之間的多對多關係:事件< < - >>團隊。 選擇一個事件會將您帶到一個詳細信息頁面,您可以在其中更改參與事件的設置/相關團隊。團隊頁面向用戶提供一組(在流程之前創建的)團隊列表,該列表可以選擇(帶有複選標記)以與事件相關聯。事件MOC被傳遞給團隊視圖,該視圖具有自己的團隊MOC。當您選擇參加該活動的團隊時,我無法創建與活動的關係。在保存方法:如何創建與兩個現有對象的核心數據關係

-(void)add 
{ 
for (int i = 0; i < dataArray.count; ++i) 
{ 
    NSDictionary *item = [dataArray objectAtIndex:i]; 

    NSString *name = [item valueForKey:@"teamName"]; 
    BOOL isChecked = [[item valueForKey:@"teamChecked"] boolValue]; 

    if (isChecked != 0) 
    { 

     NSManagedObjectContext *context = [event managedObjectContext]; 
     Team *team = [NSEntityDescription insertNewObjectForEntityForName:@"Team" inManagedObjectContext:context]; 

     [event addTeamsObject:team]; 

     team.teamName = name; 

     NSError *error = nil; 
     if (![context save:&error]) 
     { 

      NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
      abort(); 
     } 

    } 

} 

[self dismissModalViewControllerAnimated:YES]; 
} 

與代碼的問題是,insertNewObjectForEntity需要所選擇的球隊並創建相關的事件的新副本的團隊。我如何才能將選定的團隊與活動相關聯?任何幫助是極大的讚賞!

+0

非常感謝你的回答!我遇到過這個網站:http://www.iphonedevsdk.com/forum/iphone-sdk-development/49676-core-data-pre-filling-relationships.html。這幫助我理解了這些關係,遠遠超過了我從閱讀蘋果文檔中獲得的關係。蘋果文檔DO顯示正確的代碼,我不覺得它解釋得很好。希望這個線程幫助別人! – Mike 2012-04-27 18:09:39

回答

1

好吧,如果你多到許多已每個關係正確地建模爲具有「後關係」設置爲在.xcdatamodel另一個(或.xcdatamodeld)文件這不應該是必要的。但是,你可以只是嘗試,在此之後:

[event addTeamsObject:team]; 

添加此

[team addEventsObject:event]; 

本質強迫自己背的關係。

從您的代碼然而它可以是,已經有一個團隊要與該事件相關聯的特定teamName。在這種情況下,您不得不插入新的團隊對象 - 只需獲取現有團隊對象並設置關係方法即可。

相關問題