【问题标题】:Swift : Core Data join entitySwift:核心数据连接实体
【发布时间】:2018-02-18 08:52:00
【问题描述】:

我知道 NSFetchedResultsController 不支持多个实体。但我想知道解决以下问题的有效方法是什么。

假设我有两个实体:目录和 selectedProduct。我正在获取所有实体目录给用户,以便他可以选择一些产品,任务是:只建议目录中不在 selectedproduct 中的产品。

在 SQL 中,它将类似于 select * from catalogue where productName not in (select productName from selectedProduct)

【问题讨论】:

  • 您想使用 FRC 的更改跟踪(即委托方法)吗?请记住,FRC 将仅观察目录对象的更改,而不是 selectedProducts 的更改。您是否考虑过只向目录实体添加一个选定的属性?
  • @pbasdf 我无法在我的数据模型中添加选定的属性 cz 每个产品都可以在多个列表中。因此在目录实体中有产品列表,并且每个生产的产品都可以在多个选定列表中
  • 好的 - 你能展示数据模型吗,我正在努力描绘它。
  • @pbasdf 所以 pb 介于 TblLesCourses 和 TblProduits 之间(对不起,我是法国人)我想在提议 TblProduit 选择产品时只提议它们不在 TblLesCourses 中的相同 listdescourses 的产品。跨度>

标签: swift core-data nsfetchedresultscontroller


【解决方案1】:

认为以下谓词应根据您的需要过滤产品:

fetch.predicate = NSPredicate(format:"SUBQUERY(lescourses, $lc, $lc.listedescourses == %@).@count == 0",listdescourses)

我使用了 SUBQUERY。理论上它可以用NONENOT ANY 完成,但我有时发现CD 不能正确解析它们。请注意,根据 cmets,FRC 将仅观察对 TblProduits 的更改,如果您要修改现有的 TblLesCourses 对象以建立与 listdescourses 的关系,FRC 不会(除非您重做 @ 987654327@) 认识到不应再包含相关的TblProduits 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    相关资源
    最近更新 更多