我有一个Student实体,它有一个dateOfBirth属性。
我想按出生日期的升序从Student实体中提取所有学生,但按月份的递减顺序分组。
例如:同月的学生按升序分组,但所有的组都是降序的。
第1节:2019年12月
-学生1:道布-2019年12月1日
-学生2:道布-2019年12月2日
-学生3:道布-2019年12月3日
第2款:2019年11月
-学生1:道布-2019年11月1日
-学生2:道布-2019年11月2日
-学生3:道布-2019年11月3日
第3款:2019年10月
-学生1:道布-2019年10月1日
-学生2:道布-2019年10月2日
-学生3:道布-2019年10月3日
是否可以编写一个NSFetchRequest来支持这个查询?我必须使用NSFetchResultsController来填充UITableView,但是我无法编写获取请求。
要根据学生的dateOfBirth进行分组,我有一个额外的属性,即带有dateFormat yyyyMM的yearMonthString。我使用yearMonthString属性对学生进行分组。
let studentFetchRequest: NSFetchRequest<Student> = Student.fetchRequest()
studentFetchRequest.predicate = NSPredicate(format: "%K != nil AND %K != nil", #keyPath(Student.dateOfBirth), #keyPath(Student.yearMonthString))
let dateSortDescriptor = NSSortDescriptor(key: #keyPath(Student.dateOfBirth), ascending: false)
studentFetchRequest.sortDescriptors = [dateSortDescriptor]
let frc = NSFetchedResultsController<Student>(fetchRequest: studentFetchRequest,
managedObjectContext: managedContext,
sectionNameKeyPath: #keyPath(Student.yearMonthString),
cacheName: nil)如果我给dateSortDescriptor作为提升,那么所有的部分也都成为提升,如果我给dateSortDescriptor降序,那么该部分中的学生就会下降。
写这个提取请求的正确方法是什么?是否可以为各节提供不同的排序描述符?
发布于 2019-12-25 16:48:42
使用两个排序描述符,一个用于按年份/月份进行排序(降序),另一个用于按出生日期进行排序(上升):
let groupSortDescriptor = NSSortDescriptor(key: #keyPath(Student.yearMonthString), ascending: false)
let dateSortDescriptor = NSSortDescriptor(key: #keyPath(Student.dateOfBirth), ascending: true)
studentFetchRequest.sortDescriptors = [groupSortDescriptor, dateSortDescriptor]https://stackoverflow.com/questions/59479074
复制相似问题