Ios 如何通过限制从NSFetchedResultsController获取最新对象?

Ios 如何通过限制从NSFetchedResultsController获取最新对象?,ios,swift,nsfetchedresultscontroller,Ios,Swift,Nsfetchedresultscontroller,也许问题的标题并不恰当,但以下是我需要用我的NSFetchedResultsController实现的目标: private func setupOnceFetchedResultsController() { if fetchedResultsController == nil { let context = NSManagedObjectContext.MR_defaultContext() let fetchReguest = NSFetchReq

也许问题的标题并不恰当,但以下是我需要用我的
NSFetchedResultsController实现的目标:

private func setupOnceFetchedResultsController() {

    if fetchedResultsController == nil {
        let context = NSManagedObjectContext.MR_defaultContext()
        let fetchReguest = NSFetchRequest(entityName: "WLComment")
        let createdAtDescriptor = NSSortDescriptor(key: "createdAt", ascending: true)

        fetchReguest.predicate = NSPredicate(format: "item.identifier = %d", item.identifier)
        fetchReguest.sortDescriptors = [createdAtDescriptor]
        fetchReguest.fetchLimit = 10

        fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchReguest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
        fetchedResultsController.delegate = self

        try! fetchedResultsController.performFetch()
        tableView.reloadData()
    }
}
假设我有大约100条评论。最老的在顶部,最新的在底部。当我需要显示所有这些文件时没有问题,但在这里我只需要10个文件。上面的
NSFetchedResultsController
将显示100条消息中的前10条,但我需要显示最新的10条


有没有办法让它知道我需要什么?

根据您以后如何使用数据,您可以从至少两个选项中进行选择:

  • 还原排序描述符,将以还原的顺序返回排序列表的末尾

  • 首先获取项目数量并设置相应的
    fetchOffset
    ,将返回所需数量的项目,并根据需要进行订购


根据以后使用数据的方式,您可以从至少两个选项中进行选择:

  • 还原排序描述符,将以还原的顺序返回排序列表的末尾

  • 首先获取项目数量并设置相应的
    fetchOffset
    ,将返回所需数量的项目,并根据需要进行订购


将“升序”更改为false如何?这样就可以了,但它将显示在表格中,从最新的顶部到最旧的底部,如此颠倒,而不是我所期望的。将“升序”更改为false如何?这样就可以了,但它将显示在表格中,从最新的顶部到最旧的底部,如此颠倒,而不是我所期望的。恢复的秩序不是我所期望的。如何首先获取项目数?从核心数据获取它我相信您需要使用单独的获取请求来实现这一点,如果数据集足够大且性能至关重要,那么可能会有一个SQL查询一次性完成所有操作。我建议您进一步研究它,这就是为什么我使用
NSFetchedResultsController
不手动从核心数据中提取任何内容。还原的顺序不是我所期望的。如何首先获取项目数?从核心数据获取它我相信您需要使用单独的获取请求来实现这一点,如果数据集足够大且性能至关重要,那么可能会有一个SQL查询一次性完成所有操作。我建议您进一步研究它,这就是为什么我使用
NSFetchedResultsController
不手动从核心数据获取任何内容。