【问题标题】:Core Data. Join 2 tables with many-tomany relationship?核心数据。加入 2 个具有多对多关系的表?
【发布时间】:2013-09-24 09:48:48
【问题描述】:

我有 2 个表,它们之间通过多对多关系链接。

不存在等效的 SQL,因为它需要第三个表将多对多关系拆分为两个一对多关系。

例如,我有两个核心数据实体:具有属性的类别(项目数组)和具有属性的项目(类别数组)。

我需要获取除“空”类别之外的所有类别(当没有此类别的项目时)。

我当前的临时解决方案看起来不正确。我使用 NSFetchRequest 来获取所有类别。然后我使用 for-each 手动从这个数组中删除所有具有空项数组的类别。

【问题讨论】:

    标签: core-data join left-join nsfetchrequest right-join


    【解决方案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"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多