2016-04-28 60 views
0

「例程」與「鍛鍊」具有一對多的關係。兩者都是NSManagedObject類。我有一個稱爲「myWorkouts」的訓練數組,我想在數組中的每個鍛鍊和例程之間建立關係。這裏是我的數據模型:如何一次將多個關係保存到CoreData?

enter image description here

下面是「常規」類的屬性代碼:

extension Routine { 
    @NSManaged var name: String? 
    @NSManaged var workout: Set<Workout>? 
} 

這裏就是我試圖創建關係的代碼:

var myWorkouts = [Workout]() 

for workout in myWorkouts { 
    routine!.workout = Set(arrayLiteral: workout) 
} 

我運行中的問題是,每一個被保存鍛鍊覆蓋上工作了保存,所以,在現實中,它的唯一可取的最後作爲與日常關係的陣列中的鍛鍊。我如何保存所有這些?

回答

1

您將要覆蓋每一次的一組關係,通過你的循環:

for workout in myWorkouts { 
    routine!.workout = Set(arrayLiteral: workout) 
} 

這相當於其覆蓋每次存儲在鍛鍊值以下。

routine!.workout = Set(arrayLiteral: a) 
routine!.workout = Set(arrayLiteral: b) 
routine!.workout = Set(arrayLiteral: c) 

相反,你需要指定一個包含一次所有試訓集:

routine!.workout = Set(myWorkouts) 
+0

啊我看到我錯在哪裏。我曾嘗試過這樣做,並且一直出現錯誤,這是因爲我的代碼是例行的!.workout = Set(arrayLiteral:myWorkouts)。我現在覺得很蠢,哈哈。謝謝您的幫助! – user3353890

+0

既然你有反向關係,你也可以簡單地設置每個'workout'的'routine'屬性,Core Data將爲你做其餘的事情; 'workout.routine =例程!' – Paulw11