嗨 在我的应用核心数据模型中,我有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. 核心数据,没有反向关系
- 2. 核心数据反向关系ios
- 3. 核心数据关系类型问题
- 4. 核心数据:不同类型的共同关系
- 5. 核心数据反比关系
- 6. 核心数据反比关系
- 7. 核心数据中的单向关系
- 8. 与核心数据中的同一个实体有多种反向关系
- 9. 核心数据中的关系同步
- 10. 核心数据无关系
- 11. iOS核心数据 - 关系
- 12. 核心数据和关系
- 13. 核心数据关系
- 14. iPhone核心数据关系
- 15. 核心数据 - 关系
- 16. 核心数据模型 - 关系
- 17. 如何同步核心数据关系?
- 18. 核心数据:与多个实体的反向关系?
- 19. 核心数据反向关系没有设置
- 20. 核心数据反向关系没有得到设置
- 21. 编辑核心数据关系数据
- 22. 向同一实体分配两个CoreData关系(具有相反的关系)
- 23. 获取核心数据关系的类型
- 24. 核心数据关系无法加载对一的关系
- 25. Swift 3核心数据关系不会删除相关对象
- 26. 核心数据中的三元关系
- 27. IOS上的核心数据关系
- 28. 核心数据中的许多关系
- 29. 关系中的核心数据总和
- 30. 核心数据:计数跨越关系
是的,但这些Sheet便利方法必须测试两个Text实体的类型,这似乎有点浪费。如果我们[已经]已经订购了关系,那么会更好,因此您可以决定首先放置“隐私笔记”。 – 2011-03-29 08:41:18