Ios 如何使用多个排序描述符编写NSFetchRequest?
我有一个Ios 如何使用多个排序描述符编写NSFetchRequest?,ios,swift,core-data,nsfetchedresultscontroller,nsfetchrequest,Ios,Swift,Core Data,Nsfetchedresultscontroller,Nsfetchrequest,我有一个Student实体,它具有dateOfBirth属性 我想从Student实体中按出生日期的升序提取所有学生,但按月份的降序分组 例如:属于同一月份的学生按升序分组,但所有分组均按降序排列 第一节:2019年12月 --学生1:DOB-2019年12月1日 --学生2:DOB-2019年12月2日 --学生3:DOB-2019年12月3日 第二节:2019年11月 --学生1:DOB-2019年11月1日 --学生2:DOB-2019年11月2日 --学生3:DOB-2019年11月3日
Student
实体,它具有dateOfBirth
属性
我想从Student
实体中按出生日期的升序提取所有学生,但按月份的降序分组
例如:属于同一月份的学生按升序分组,但所有分组均按降序排列
第一节:2019年12月--学生1:DOB-2019年12月1日
--学生2:DOB-2019年12月2日
--学生3:DOB-2019年12月3日
第二节:2019年11月
--学生1:DOB-2019年11月1日
--学生2:DOB-2019年11月2日
--学生3:DOB-2019年11月3日
第三节:2019年10月
--学生1:DOB-2019年10月1日
--学生2:DOB-2019年10月2日
--学生3:DOB-2019年10月3日 是否可以编写
NSFetchRequest
来支持此查询?我必须使用NSFetchResultsController
来填充UITableView
,但我无法编写提取请求
要按照学生的出生日期对他们进行分组
我有一个额外的属性,它是一个yearMonthString
,日期格式为yyyyMM
。我正在使用yearMonthString
属性对学生进行分组
let studentFetchRequest:NSFetchRequest=Student.fetchRequest()
studentFetchRequest.predicate=NSPredicate(格式:“%K!=nil和%K!=nil”、#键路径(Student.dateOfBirth)、#键路径(Student.yearMonthString))
让dateSortDescriptor=NSSortDescriptor(键:#键路径(Student.dateOfBirth),升序:false)
studentFetchRequest.sortDescriptors=[dateSortDescriptor]
让frc=NSFetchedResultsController(fetchRequest:studentFetchRequest,
managedObjectContext:managedContext,
sectionNameKeyPath:#keyPath(Student.yearMonthString),
缓存名称:nil)
如果我将dateSortDescriptor
设置为升序,则所有部分也将变为升序;如果我将dateSortDescriptor
设置为降序,则该部分中的学生将变为降序
写入此提取请求的正确方法是什么?是否可以为分区指定不同的排序描述符?使用两个排序描述符,一个按年/月排序(降序),另一个按出生日期排序(升序):
let groupSortDescriptor = NSSortDescriptor(key: #keyPath(Student.yearMonthString), ascending: false)
let dateSortDescriptor = NSSortDescriptor(key: #keyPath(Student.dateOfBirth), ascending: true)
studentFetchRequest.sortDescriptors = [groupSortDescriptor, dateSortDescriptor]