Ios fetchLimit返回第一个项目而不是最后一个项目
我正在使用NSFetchedResultsController从数据库中获取数据并显示在UITableView中(元素根据时间戳排序)。现在我想使用fetchLimit属性只加载最后20个项目,但是Ios fetchLimit返回第一个项目而不是最后一个项目,ios,swift,uitableview,Ios,Swift,Uitableview,我正在使用NSFetchedResultsController从数据库中获取数据并显示在UITableView中(元素根据时间戳排序)。现在我想使用fetchLimit属性只加载最后20个项目,但是fetchLimit返回的是前20个对象,而不是最后一个。 以下是我使用的代码: lazy var messagesFetchController:NSFetchedResultsController<Message>? = { let messagesFetchReque
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
- 执行提取
fetchOffset
加载它需要很多时间。除了上面的事情,我还必须设置batchSize以更快地加载它。非常感谢你的回答。它应该被升级。当我试图设置fetchOffset
时,加载它需要花费很多时间。除了上面的事情之外,我还必须设置batchSize以更快地加载它。非常感谢你的回答。应该投票表决。