如何从NSFetchedResultsController获取带有限制的最新对象?

时间:2016-02-22 08:14:59

标签: ios swift nsfetchedresultscontroller

也许问题的标题不是很明确,但这是我需要用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条消息。

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

1 个答案:

答案 0 :(得分:0)

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

  • 恢复排序描述符,将返回已恢复顺序的已排序列表的结尾;

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