我试图弄清楚如何创建一个 SwiftUI 视图,该视图使用包含传递到视图中的变量的查询来显示来自 SwiftData 的数据。我猜我将无法使用 @Query 语法,但是有人想出一种可行的方法来执行类似的操作吗?
我是否需要放弃 @Query 并只创建一个实例化它自己的 ModelContainer 和 ModelContext 的视图模型?
这段代码显然无法编译,因为 @Query 引用了 startDate 和 endDate 变量,但这正是我想要的。
struct MyView: View {
@Environment(\.modelContext) var modelContext
@Query(FetchDescriptor<Measurement>(predicate: #Predicate<Measurement> {
$0.date >= startDate && $0.date <= endDate }, sortBy: [SortDescriptor(\Measurement.date)])) var measurements: [Measurement]
let startDate: Date = Date.distantPast
let endDate: Date = Date.distantFuture
var body: some View {
Text("Help")
}
}
Run Code Online (Sandbox Code Playgroud)
Joa*_*son 14
您无法进行动态查询(还没有),但解决方法是将日期(或完整谓词)注入视图中并以这种方式创建查询。
@Query var measurements: [Measurement]
init(startDate: Date, endDate: Date) {
let predicate = #Predicate<Measurement> {
$0.date >= startDate && $0.date <= endDate
}
_measurements = Query(filter: predicate, sort: \.date)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5318 次 |
| 最近记录: |