核心数据。无法根据与继承实体的关系来获取/排序实体
Posted
技术标签:
【中文标题】核心数据。无法根据与继承实体的关系来获取/排序实体【英文标题】:Core data. Can't fetch/sort entities based on the relationship to an inherited entity 【发布时间】:2013-12-04 12:10:44 【问题描述】:[A][B].attribute
如果关系对象继承自抽象类,则无法根据关系属性获取/排序对象
NSSortDescriptor *titleSort = [[NSSortDescriptor alloc]initWithKey:@"b.attribute" ascending:YES];
[fetchRequest setSortDescriptors:@[titleSort]];
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath b.attribute not found in entity <NSSQLEntity A id=17>'
所以我们与 [B] 有“一对一”的关系,它有一些属性;
当我尝试通过 [B] 的“属性”获取 [A] 时,我遇到了崩溃。
这很奇怪,似乎 Core Data 不支持处理使用继承实体的键路径
你遇到过这个吗????
谓词也是如此 - 请帮助!!!
问问题,随心所欲
【问题讨论】:
这种关系不可能是B
而不是b
使其成为“B.attribute”
对不起,你什么意思?
在您的示例中,您声明 [A]>[B].attribute 但在您的排序描述符中,您使用 b.attribute 它实际上应该是 B.attribute 如果这不仅仅是伪代码。
是的,它只是伪代码。我这样做是为了简化情况。事实上,在“b.attribute”下,我的代码中有“mainEntity.date”键路径
这很奇怪,似乎Core Data不支持处理使用继承实体的keypath
【参考方案1】:
我不确定问题是 B 是继承的实体。 通常不能在第二层进行操作(在与实体 A 相关的另一个实体 B 上的属性上)。
基本上你应该分两步完成:
-
检索所有B对象,按
attribute
排序
使用 for-each 循环从 B 对象中获取 A 对象(非常简单,因为您有一对一的关系)
【讨论】:
以上是关于核心数据。无法根据与继承实体的关系来获取/排序实体的主要内容,如果未能解决你的问题,请参考以下文章