核心数据。加入 2 个具有多对多关系的表?
Posted
技术标签:
【中文标题】核心数据。加入 2 个具有多对多关系的表?【英文标题】:Core Data. Join 2 tables with many-tomany relationship? 【发布时间】:2013-09-24 09:48:48 【问题描述】:我有 2 个表,它们之间通过多对多关系链接。
不存在等效的 SQL,因为它需要第三个表将多对多关系拆分为两个一对多关系。
例如,我有两个核心数据实体:具有属性的类别(项目数组)和具有属性的项目(类别数组)。
我需要获取除“空”类别之外的所有类别(当没有此类别的项目时)。
我当前的临时解决方案看起来不正确。我使用 NSFetchRequest 来获取所有类别。然后我使用 for-each 手动从这个数组中删除所有具有空项数组的类别。
【问题讨论】:
【参考方案1】:为了获取除空类别之外的所有类别,您可以使用如下谓词:
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Category"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"items.@count > 0"];
NSArray *categories = [context executeFetchRequest:fetchRequest error:NULL];
【讨论】:
你自己试过了吗?由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“此处不允许使用多对多键”,这对我来说是个问题 对不起,错字。它应该是items.@count
而不是 items.count
【参考方案2】:
我的解决方案:
[NSPredicate predicateWithFormat:@"ANY items != nil"]
【讨论】:
以上是关于核心数据。加入 2 个具有多对多关系的表?的主要内容,如果未能解决你的问题,请参考以下文章