0

我有2個實體位置和項目。多對多的關係。核心數據多對多關係。如何更新或設置關係?

因此,每個項目可以有多個地點和任何地點可以有多個項目。

我解析項目的XML和比試圖添加位置。

所以我ManagedObject項目,我剛纔插入的位置,所以有什麼語法(代碼)設置這些項目的位置?

我只看到添加和ManagedObject類中刪除。

下面是有效 其中CURRENTITEM,位置是兩個ManagedObjects和setItem_location_relationship是關係中的項目實體

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
     NSEntityDescription *entity = [NSEntityDescription entityForName:@"Locations" 
                inManagedObjectContext:managedObjectContext]; 
     [fetchRequest setEntity:entity]; 

     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"location_id = %@", 
            [locationsArray objectAtIndex:i]]; 
     [fetchRequest setPredicate:predicate]; 

     NSError *error = nil; 
     NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
     if (fetchedObjects == nil) { 

     } 

     [fetchRequest release]; 

     Locations *location = [fetchedObjects objectAtIndex:0]; 

     NSSet *set = [NSSet setWithObject:location]; 

     [currentItem setItem_location_relationship:set]; 

回答

3

你應該繼承您的NSManagedObject名稱。 Xcode會爲你編寫類文件。然後,一切都變得簡單 - Xcode將爲您生成方法。在Item.h假設你的實體稱爲ItemLocationItem的一對多關係被稱爲locations,這些定義應該是這樣的:

- (void)addLocationsObject:(NSManagedObject *)value; 
- (void)removeLocationsObject:(NSManagedObject *)value; 
- (void)addLocations:(NSSet *)values; 
- (void)removeLocations:(NSSet *)values; 

所以要加一個位置對象:

Location *loc = [NSEntityDescription insertNewObjectForEntityForName:"Location" 
    inManagedObjectContext:self.managedObjectContext]; 
// ... configure loc with info from the xml feed 
// or use a fetched location object 
[currentItem addLocationsObject:loc]; 
+0

是我有這些方法。但我的問題是我如何將現有位置設置爲我創建的項目。 –

+0

您可以在我的編輯中看到它的完成方式。 – Mundi

+0

我的意思是說我不想添加位置,如果它已經存在,該怎麼辦,所以我想將該項目鏈接到現有位置。或者它究竟是什麼? –