代码之家  ›  专栏  ›  技术社区  ›  alionthego

NSFetchedResultsController谓词以消除多个属性的重复

  •  0
  • alionthego  · 技术社区  · 6 年前

    是否可以指定一个谓词,该谓词将不检索在我指定的x个字段中具有重复字段的项。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Jon Rose    6 年前

    选择1

    选择2

    如果数据集总是以相同的方式被选中,并且重复的对象总是重复的,那么可以在对象中设置“is duplicate”,并在谓词中过滤掉它。或者你一开始就不能储存。如果对象以不同的方式以不同的集合显示,有时应该显示,有时不显示,这不是一个好的解决方案

    如果按使对象重复的相同条件排序(即重复项始终显示在非重复项旁边),并且不使用sectionKeyPath,则可以使用sectionKeyPath。SectionKeyPath将项目组合成多个部分。将重复项和非重复项组合在一起,然后将每个节显示为一行(使用每个节中的第一个项)。fetchedResultsController的indexpath与tableview的indexpath不匹配,因此必须小心转换它们。

    选项4

    不要从fetchedResultsController访问对象,而是执行一个fetch并过滤数组。然后使用数组显示对象。缺点是当对象发生更改时无法获得更新。这可能特别有问题的是对象被删除,因为访问实体被删除的managedObject可能会导致崩溃。

    我建议选择1