如何使用fetchedResultsController在CoreData中获取最后n条记录

时间:2019-03-08 06:30:46

标签: ios swift core-data nsfetchedresultscontroller

我有一个表格Student,其中有两个属性Name和DateOfBirth。 我想在UITableView中按其DateOfBirth的降序显示学生的姓名,该日期在列表的顶部是年轻的,在列表的底部是年长的。

我创建了一个FetchRequest来获取所有学生并按其DateOfBirth的降序显示。

let studentFetchRequest = Student.fetchRequest()
let dateSortDescriptor = NSSortDescriptor(key: #keyPath(Student.dateOfBirth), ascending: false)
studentFetchRequest.sortDescriptors = [dateSortDescriptor]

let frc = NSFetchedResultsController<Student>(fetchRequest: studentFetchRequest, managedObjectContext: managedContext, sectionNameKeyPath: nil, cacheName: nil)

frc.performFetch()

现在,我有一个要求,我只需要显示最后15名学生。考虑到学生表有50条记录。

我尝试将sortDescriptor的ascending属性更改为true,并将15的fetchLimit添加到我的studentFetchRequest中,以仅获取最后15个学生。

它获取了最后15名学生,但是却颠倒了他们在UITableView中列出的顺序。即年龄较大的学生在顶部,年龄较小的在底部。

如何修改fetchRequest并仍然能够使用FetchedResultsController显示我的UITableView中的最后15名学生?

我需要使用FetchedResultsController,因为实际表非常复杂,我已简化了问题的解释范围。

0 个答案:

没有答案