2013-07-17 74 views
0

我一直在試圖獲得核心數據實體間工作關係的單一任務。我已經實現了這一點,但現在我需要對其進行更改,以便新屬性值將其關係添加到現有對象中。它是一對多的數據庫。在覈心數據中添加關係

我不知道如何將關係添加到已存在的對象。因此,在添加到RoutineDetail的新對象中,我將如何創建與例程實體中已存在的對象的關係?

我看過幾個例子都顯示如何添加關係到新添加的對象,但我需要它,因此RoutinesDetails中的新對象與Routines中已存在的值有關係。

Routines值在一個字符串舉行名爲RoutineText

rout is the NSmangedObject for the entity Routines 

routDet is the NSmanagedObject for the entity RoutinesDetails 

我已經離開了註釋掉的代碼,讓我創建了兩個新對象時添加的關係。

這是我不得不在我的項目中做的最後一件事,但它讓我瘋狂。我會永遠感謝這裏的修復。任何建議將不勝感激,因爲這是最好的知識門戶。謝謝。

NSManagedObjectContext *context = [self managedObjectContext]; 

    // Create a new device 
    ExcerciseInfo *info = [_fetchedResultsController objectAtIndexPath:indexPath]; 

//rout = [NSEntityDescription insertNewObjectForEntityForName:@"Routines" inManagedObjectContext:context]; 

    routdet = [NSEntityDescription insertNewObjectForEntityForName:@"RoutinesDetails" inManagedObjectContext:context]; 

    //Add attribute values 
    //[rout setValue: RoutineText forKey:@"routinename"]; 
    [routdet setValue: info.name forKey:@"image"]; 

    //Create Relationship 
    [rout addRoutinedetObject:routdet]; 

enter image description here

+1

什麼是不工作? – Mundi

+1

昨天你問的不是這個問題嗎? http://stackoverflow.com/questions/17686651/core-data-relationship-add-to-existing-value –

回答

0

你的主要問題的陳述,我認爲,在這裏:

我需要它,這樣在RoutinesDetails新對象與已經存在於例程價值的關係。

我相信你的數據模型是這樣的:

Routine <----> RoutineDetail 

即每一個程序都有一個例行的細節(一比一的關係)。

但這並沒有任何意義。您可以簡單地在Routine實體中包含RoutineDetail的屬性。

而不是

desiredValue = routineDetail.routine.value; 

,你也只會

desiredValue = routineDetail.value; 

另外,請注意,你的代碼有一些問題。第一行是完全不必要的,只需使用self.managedObjectContext此外,根據慣例,您正在使用變量的首字母縮寫。這些應該保留給類名。您添加關係的方法也看起來不正確。

您可以添加這樣的關係,沒有一個方法調用:

routineObject.detail = detailObject; 
+0

沒有我的數據模型是1到很多.....所以你建議只是添加一個額外的屬性到RoutineDetail? – Sgillon

+0

什麼不工作是我不知道如何添加關係到已存在的對象。因此,在添加到RoutineDetail的新對象中,我將如何創建與例程實體中已存在的對象的關係? – Sgillon

+0

如果將新對象添加到多對多關係中,則可以在實體的實例上使用形式爲「addRoutineObject:」的核心數據生成方法。要將一對一關係添加到現有對象,只需在我的答案底部使用點符號。 – Mundi