嗨 在我的應用核心數據模型中,我有Sheet和Text實體。表單實體可以有兩個文本:privacyNotes和termsOfUse。兩種文本類型。因此,在XCode數據建模器中,我在Sheet with Text目標中創建了稱爲「privacyNotes」和「termsOfUse」的一對一關係。下一步在文本中找到一個關係「表」。然後,我選擇該Text.sheet關係作爲Sheet.privacyNotes的反向。到現在爲止還挺好。但是,當我爲Sheet.termOfUse設置相同的Text.sheet關係時,XCode將此關係作爲反向Sheet.privacyNotes刪除! 我明白,與Objective-C對象關係相比,DB中的關係不是那麼簡單,但我真的不明白爲什麼SQLite或(CoreData)不能重複使用一個關係作爲其他關係的反例?核心數據:兩種關係相同類型的反向關係
12
A
回答
11
在抽象風格下的一點窺視可能是啓發*:一個關係只能是另一個關係的倒數,因爲在後備存儲中,它們由相同的數據表示。如果文本和工作表可以有一定的關係,Core Data會做一個好的人類數據建模師,並儘可能簡潔地存儲這種關係。實體對象的關係屬性只是查看這種關係的方式。
爲了得到你要做的事情的效果:繼續並給出圖紙屬性的隱私註釋和termsOfUse;但給文本屬性,如sheetIAmTermsFor和sheetIAmPrivacyNoteFor,並將它們設置爲反向。然後在文本類,沿着這些線路增加一個綜合性能:
// in interface
@property (nonatomic, readonly) Sheet *sheet;
// in impl
-(Sheet *)sheet
{
if ([self sheetIAmTermsFor])
return [self sheetIAmTermsFor];
else
return [self sheetIAmPrivacyNoteFor];
}
如果你想要寫一個setter過,你就必須決定哪個角色二傳手應該賜給文本(其中核心數據「T弄清楚你,另一個原因屬性不能是兩個不同性質的倒數)。
如果需要執行這一文本永遠只能是一個‘privacyNote’約束或「術語「,但從來都沒有,覆蓋sheetIAmTermsFor和sheetIAmPrivacyNoteFor的設置器,按照文檔中的Apple模式設置,並且在設置時每個屬性都爲null。 (* Apple認爲SQLite數據庫Core Data生成的私有數據庫實現,但是檢查他們的模式可能非常具有教育意義,只是不要試圖寫出運行代碼直接放在CD背後去直接訪問數據庫)
5
你最好在Sheet和Text之間建立一對多關係,驗證限制爲2.然後你應該在文本中有一個type屬性,聲明它爲privacyNotes
或termsOfUse
。從那裏你可以添加便捷方法到你的Sheet子類,使你可以檢索任何一個。
相關問題
- 1. 核心數據反向關係ios
- 2. 核心數據,沒有反向關係
- 3. 核心數據關係類型問題
- 4. 核心數據:不同類型的共同關係
- 5. 核心數據反比關係
- 6. 核心數據反比關係
- 7. 核心數據中的單向關係
- 8. 與核心數據中的同一個實體有多種反向關係
- 9. 核心數據關係 - 使用多個相似類型建立一個關係
- 10. 核心數據中的關係同步
- 11. 核心數據關係
- 12. 核心數據關係
- 13. 核心數據 - 關係
- 14. 核心數據關係
- 15. 核心數據和關係
- 16. iPhone核心數據關係
- 17. iOS核心數據 - 關係
- 18. 核心數據無關係
- 19. 核心數據關係
- 20. 核心數據關係
- 21. 核心數據模型 - 關係
- 22. 如何同步核心數據關係?
- 23. 核心數據:與多個實體的反向關係?
- 24. 提取反向關係,而不是核心數據中的NSSet
- 25. 不核心核心數據反比關係
- 26. 從核心數據獲取請求中排除反向關係
- 27. 核心數據反向關係沒有得到設置
- 28. 核心數據反向關係沒有設置
- 29. 核心數據反向排序關係提取
- 30. 從關係數據(iOS)快速創建核心數據關係
是的,但這些Sheet便利方法必須測試兩個Text實體的類型,這似乎有點浪費。如果我們[已經]已經訂購了關係,那麼會更好,因此您可以決定首先放置「隱私筆記」。 – 2011-03-29 08:41:18