为什么实体不能在一对一的强制逆关系中具有唯一性约束?有两个实体:
财产:名称
关系:部门(一对一,非任选)
属性:标题(唯一约束)
关系:人(对-多,可选)
在配置错误的实体错误的iOS 9,XCode 7.0.1中,模型不会编译:
配置错误的实体:实体部门不能具有唯一性约束和强制逆关系Person.department。
更新:问题在XCode 8.3.1中仍然相关。
发布于 2017-04-24 10:50:51
简短回答:
潜在的问题很可能是由sqlite标准引起的。这一点我不太确定。不管怎么说,这很可能是因为sqlite的限制。我在互联网上找到了一些帖子,人们在一张桌子上有多重限制的问题,这很可能是两张桌子解决方案起作用的原因。
长答案:
现在已经很晚了,但我希望这能帮上忙。
当实体具有唯一约束和强制关系时,就会发生这种情况。我想这是因为在iOS 9.0中添加了唯一的约束行为。但是,您可以通过两种方法解决这一问题:
您可以删除唯一的约束或使关系成为可选的。您可以在代码中处理可选关系。但这不是个好办法。
或
你可以找个解决办法。可以两者兼得。,您可以创建一个具有唯一约束的超类。然而,这也不会是没有问题的。
我们有三个实体。A、B和C。
A是你的超类,B是A的子类,C也是A的子类。A对它的属性primaryKey有一个唯一的约束。在保存B和C的实例时,不能使用相同的primaryKey来获得B和C。因为CoreData将两者都管理为A。
您可以将A更改为有两个属性:
现在可以将primaryKeys映射到originalPrimaryKey,在设置originalPrimaryKey时,可以将string primaryKey属性设置为CLASS_NAME.{originalPrimaryKey}。这将允许你有行为,你会期望。但是您必须为primaryKeys添加一个解决方案。
发布于 2019-03-29 12:09:30
如果试图使用现有实体添加约束,则解决方案是: 1.删除现有实体中的所有记录;2.删除与实体的现有关系。3.重新生成+CoreDataClass和+CoreDataProperties agin。
发布于 2015-11-11 18:01:56
让你的关系属性“可选”。我的案子解决了这个问题。
https://stackoverflow.com/questions/32845134
复制相似问题