首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NSFetchedResultsController中更改排序顺序,而不考虑sectionNameKeyPath

在NSFetchedResultsController中更改排序顺序,而不考虑sectionNameKeyPath
EN

Stack Overflow用户
提问于 2017-10-27 15:23:25
回答 2查看 398关注 0票数 4

我正在使用NSFetchedResultsController来分组,其中的sectionNameKeyPath是根据类别。

我的分类是:成人,儿童,视觉,无。

升序排序:成人、儿童、无、视觉

降序排序:愿景、无、儿童、成人

我希望无论排序顺序如何,最终都不会出现任何类别。

升序所需排序:成人、儿童、视觉、无

所需降序排序:愿景、儿童、成人、无

使用的代码如下:

代码语言:javascript
复制
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedOC, sectionNameKeyPath: "category", cacheName: nil)
EN

回答 2

Stack Overflow用户

发布于 2017-10-27 16:45:18

我认为既然你将类别存储为字符串,而字符串值只能按字母顺序排序。是否可以在数据库中创建一个数值字段?和存储的数值,如成人= 1,儿童= 2,视觉= 3,无= 4,通过您可以轻松地排列和排序的数据,无论是升序或降序。希望这能对你有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-10-28 02:27:31

如果您愿意修改CoreData模型,您可以创建一个新实体来表示类别。Category实体将有三个属性:name (字符串)、ascOrder (整数16)和descOrder (整数16)。然后(作为一次性任务)创建四个具有如下值的Category对象:

代码语言:javascript
复制
name        ascOrder    descOrder
====        ========    =========
Adult       1           3
Child       2           2
Vision      3           1
None        4           4

使用与Category的(一对一)关系替换实体的category属性。反向关系应该是对多个。现在,您可以使用name“成人”来设置与Category对象的关系,而不是将属性值设置为“成人”。然后,您可以配置您的FRC,按关键字category.ascOrdercategory.descOrder对对象进行排序,并指定相应的sectionNameKeyPath

结果是,您的表将被分组为多个部分并正确排序。但是,由于sectionNameKeyPathascOrder (或descOrder),因此name属性将为1、2、3或4,而不是“成人”、“儿童”等。要解决此问题,请在tableView的titleForHeaderInSectionviewForHeaderInSection方法中,不要使用:

代码语言:javascript
复制
let sectionInfo = self.fetchedResultsController.sections![section]
let sectionName = sectionInfo.name

而是通过从部分中的第一项遍历关系来获取名称:

代码语言:javascript
复制
let sectionInfo = self.fetchedResultsController.sections![section]
let firstItem = sectionInfo.objects![0] as! YourEntity
let sectionName = firstItem.name

如果您正在使用索引,那么索引标题也可能存在类似的问题。

如果你的应用已经上线了,这种方法的一个缺点就是需要迁移你的数据。我不记得轻量级迁移是否能够处理替换具有与新实体的关系的属性;我把它留给您来研究。

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

https://stackoverflow.com/questions/46969625

复制
相关文章

相似问题

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