Ios fetchLimit返回第一个项目而不是最后一个项目

Ios fetchLimit返回第一个项目而不是最后一个项目,ios,swift,uitableview,Ios,Swift,Uitableview,我正在使用NSFetchedResultsController从数据库中获取数据并显示在UITableView中(元素根据时间戳排序)。现在我想使用fetchLimit属性只加载最后20个项目,但是fetchLimit返回的是前20个对象,而不是最后一个。 以下是我使用的代码: lazy var messagesFetchController:NSFetchedResultsController<Message>? = { let messagesFetchReque

我正在使用NSFetchedResultsController从数据库中获取数据并显示在UITableView中(元素根据时间戳排序)。现在我想使用fetchLimit属性只加载最后20个项目,但是
fetchLimit
返回的是前20个对象,而不是最后一个。 以下是我使用的代码:

lazy var messagesFetchController:NSFetchedResultsController<Message>? = {
        let messagesFetchRequest = NSFetchRequest<Message>(entityName: "Message")
        let sortDescriptor = NSSortDescriptor(key: Constants.kTimeStampKey, ascending: true)
        messagesFetchRequest.sortDescriptors = [sortDescriptor]
        messagesFetchRequest.fetchLimit = 5

        let frc = NSFetchedResultsController(fetchRequest: messagesFetchRequest, managedObjectContext: CoreDataContentManager.managedObjectContext(), sectionNameKeyPath: "dateStamp", cacheName: nil)
        frc.delegate = self
        frc.fetchRequest.shouldRefreshRefetchedObjects = true

        do {
            try frc.performFetch()
        }
        catch {
            print("Unable to fetch cart Objects")
        }
        return frc
    }()
lazy var messagesFetchController:NSFetchedResultsController?={
让messagesFetchRequest=NSFetchRequest(entityName:“Message”)
让sortDescriptor=NSSortDescriptor(键:Constants.kTimeStampKey,升序:true)
messagesFetchRequest.sortDescriptors=[sortDescriptor]
messagesFetchRequest.fetchLimit=5
让frc=NSFetchedResultsController(fetchRequest:messagesFetchRequest,managedObjectContext:CoreDataContentManager.managedObjectContext(),sectionNameKeyPath:“dateStamp”,cacheName:nil)
frc.delegate=self
frc.fetchRequest.shouldRefreshRefetchedObjects=true
做{
试试frc.performFetch()
}
抓住{
打印(“无法获取购物车对象”)
}
返回frc
}()

您还需要使用
.fetchOffset

一般程序:

  • 设置查询的格式
  • 获取与查询匹配的记录总数
  • 设置
    .fetchLimit=5
  • 设置
    .fetchOffset=totalRecords-5
  • 执行提取

您还需要使用
.fetchOffset

一般程序:

  • 设置查询的格式
  • 获取与查询匹配的记录总数
  • 设置
    .fetchLimit=5
  • 设置
    .fetchOffset=totalRecords-5
  • 执行提取

您可以反转数组,然后获取数据。设置升序:true为升序:false并重试,但会将顺序更改为随时间戳减小而反转。您可以反转数组,然后获取数据。设置升序:true为升序:false并重试,但会将顺序更改为随时间戳减小而反转。当我尝试设置
fetchOffset
加载它需要很多时间。除了上面的事情,我还必须设置batchSize以更快地加载它。非常感谢你的回答。它应该被升级。当我试图设置
fetchOffset
时,加载它需要花费很多时间。除了上面的事情之外,我还必须设置batchSize以更快地加载它。非常感谢你的回答。应该投票表决。