我是iOS编程的新手,但已经做了多年的SQL工作.我正在尝试使用Core Data来构建我的模型.在教程之后,我为我的应用程序创建了一个模式,该模式涉及许多不是双向的一对多关系.
例如,我有一个游戏实体和一个玩家实体.游戏包括一系列玩家.因为玩家可以参与多个游戏,所以反向关系没有任何意义,也不需要.
然而,当我编译我的应用程序时,我得到两种形式的一致性错误消息.有人说.
Game.players does not have an inverse; this is an advanced setting.
Run Code Online (Sandbox Code Playgroud)
真?这是一个"高级"功能,足以获得警告信息?我应该忽略这个消息,还是我真的在做错了,核心数据不是设计用的?
另一种是Misconfigured Property形式并记录文本:
Something.something should have an inverse.
Run Code Online (Sandbox Code Playgroud)
那为什么会这么想?
我找不到任何模式,为什么它选择一个错误消息而不是另一个.任何有关iOS newb的提示都将不胜感激.
这是在Xcode 5.0.2下.
Mar*_*rra 10
核心数据不是数据库.这是一个重要的事实,否则你将在很长一段时间内与框架作斗争.
核心数据是您的数据模型,它恰好作为其选项之一持久存储到数据库中.这不是它的主要功能,它是次要功能.
核心数据需要/建议您使用反向关系,以便在不需要昂贵维护的情况下保持参照完整性.例如,如果您在A和B之间有一个方向(表示为A - > B)并且您删除了B,则Core Data可能需要遍历整个A表以查找对B的引用,以便它可以清理它们.这很贵.如果您有适当的双向关系(A < - > B),那么Core Data确切地知道它需要触摸哪些A对象以保持参照完整性.
这只是一个例子.
双向性不是必需的,但建议高度足以确实应该被视为一项要求.即使你从未使用它,99.999%的时间你想要这种双向关系.核心数据将使用它.
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |