按日期获取 SwiftData 中的最后一条记录

问题描述 投票:0回答:1

我有一个 @Model 类,它有一个项目数组,这些项目也通过关系保存在数据库中。有没有办法在数据库级别按日期获取最后一条记录,而不是获取所有记录然后获取最大日期

这就是我现在正在做的事情,速度很慢,我正在寻找更好的方法

    let fetchDescriptor = FetchDescriptor<Item>(predicate: #Predicate {$0.tag?.persistentModelID == id}, sortBy: [SortDescriptor(\.date)])
 let items = try! modelContext.fetch(fetchDescriptor)
                    let lastItem = items.last!

我尝试了

fetchDescriptor.fetchLimit = 1
,但它不起作用,它给了我一些随机项目。

swiftui swift-data
1个回答
0
投票

使用具有获取限制的反向排序顺序仅获取最新的对象

var fetchDescriptor = FetchDescriptor<Item>(predicate: { 
    $0.tag?.persistentModelID == id 
}, sortBy: [SortDescriptor(\.date, order: .reverse)])
fetchDescriptor.fetchLimit = 1
© www.soinside.com 2019 - 2024. All rights reserved.