首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >消除几个属性的重复项的NSFetchedResultsController谓词

消除几个属性的重复项的NSFetchedResultsController谓词
EN

Stack Overflow用户
提问于 2018-08-11 23:24:56
回答 1查看 133关注 0票数 0

我在我的UITableViewController中使用一个UITableViewController。

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

例如,我想搜索所有的结果,但是如果itemName、itemDescription和itemQuantity是相同的,我只想要其中的一个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-12 06:22:25

备选案文1

当页面加载时,只运行一次数据,并保留重复的objectID列表。对于重复对象,将单元格的行高设置为0。所以从技术上讲,他们还在那里,但你看不见。这使得处理NSFetchedResultsControllerDelegate调用变得容易,因为没有任何indexPaths更改。

选项2

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

选项3

如果您按照相同的条件进行排序,使对象重复(即重复项总是出现在非重复的旁边),并且不使用区段,那么您可以使用sectionKeyPath。SectionKeyPath将项目分组为几个部分。将重复和非重复组合在一起,然后将每个部分显示为单个行(使用每个节中的第一个项)。indexPaths的fetchedResultsController将与表视图的indexPaths不匹配,因此您必须小心地转换它们。

备选案文4

而不是从fetchedResultsController访问对象,而是进行获取和筛选数组。然后使用数组显示对象。缺点是,当对象发生变化时,您不会得到更新。当对象被删除时,这可能是特别有问题的,因为访问实体managedObject的删除会导致崩溃。

我推荐备选方案1

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51804532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档