2014-01-28 32 views
1

舉例:直接設置NSSet關係時,核心數據是否會填充相反的關係?

我有一個實體User,以及一個實體Device

User有要向着Device一對多的關係,稱爲devices

Device具有與此關係的倒數user


現在我收集了大量的設備,網絡服務,滋潤他們爲NSSet,那麼我必然會給他們一個特定的用戶,所以我做的:

NSSet *collectedDevices = [API getSomeDevices]; 
someUser.devices = collectedDevices; 

威爾核心數據填充逆每個Deviceuser關係?它是否注意到關係的制定者?


背景:

我知道核心數據setter方法設置的集合,但我想避免使用它們。我實際上是用KVC來重建JSON表示的核心數據實體,沒有硬編碼的屬性,關係,只是枚舉它們的實體描述,並設置匹配的值。

+0

@Marco謝謝你。 – Geri

+0

NSSet是NSManagedObjects的集合嗎? – k1th

+0

你試過了嗎? –

回答

4

是的,無論您使用屬性還是KVC或核心數據特定方法(如-setPrimitiveValue:forKey:),核心數據都會設置相反的關係。

但是,它設置該逆可以稍微變化。它可以在某些情況下立即設置,而在其他情況下可以等待直到運行循環結束以設置反轉。只要所有相關對象都是根據相同的NSManagedObjectContext創建的,那麼參考完整性將由Core Data維護。

+0

謝謝,這對我來說足夠了。 – Geri

+0

只是更多的事情。爲什麼即使Core Data創建像' - (void)addDevices:(NSSet *)值這樣的方法;'如果它通過一個簡單的屬性集合工作?其實這種方法讓我懷疑這件事。 – Geri

+0

我剛剛嘗試過,按照您的描述工作。 – Geri