我在我的UITableViewController中使用一个UITableViewController。
是否可以指定一个谓词,它不会检索我指定的x个字段中有重复字段的项。
例如,我想搜索所有的结果,但是如果itemName、itemDescription和itemQuantity是相同的,我只想要其中的一个。
发布于 2018-08-11 22:22:25
备选案文1
当页面加载时,只运行一次数据,并保留重复的objectID列表。对于重复对象,将单元格的行高设置为0。所以从技术上讲,他们还在那里,但你看不见。这使得处理NSFetchedResultsControllerDelegate调用变得容易,因为没有任何indexPaths更改。
选项2
如果数据集总是以相同的方式选择,而重复的对象总是重复的,则可以在对象中设置“isDuplicate”,并在谓词中将其过滤掉。或者你一开始就不能储存。如果对象以不同的集合以不同的方式显示,并且应该以不同的方式显示,有时不显示,则这不是一个好的解决方案。
选项3
如果您按照相同的条件进行排序,使对象重复(即重复项总是出现在非重复的旁边),并且不使用区段,那么您可以使用sectionKeyPath。SectionKeyPath将项目分组为几个部分。将重复和非重复组合在一起,然后将每个部分显示为单个行(使用每个节中的第一个项)。indexPaths的fetchedResultsController将与表视图的indexPaths不匹配,因此您必须小心地转换它们。
备选案文4
而不是从fetchedResultsController访问对象,而是进行获取和筛选数组。然后使用数组显示对象。缺点是,当对象发生变化时,您不会得到更新。当对象被删除时,这可能是特别有问题的,因为访问实体managedObject的删除会导致崩溃。
我推荐备选方案1
https://stackoverflow.com/questions/51804532
复制