SwiftData - 如何在 SwiftUI 之外观察数据库的更改?

Qua*_*ntm 17 swift swift-data

我有一个简单的例子。Trip我从数据库中获取所有对象:

import SwiftData

@Model
class Trip {
    var name: String
}

func fetch() {
    let container = ModelContainer(for: Trip.self)
    let context = ModelContext(container)
    let fetchDescriptor = FetchDescriptor<Trip>()
    let trips = try! context.fetch(fetchDescriptor)
    
    // Store it somewhere ...
}
Run Code Online (Sandbox Code Playgroud)

如何观察 trips 数组的变化?我知道数组中的各个对象是可观察的,并且当某些内容提交到数据库时会发生变化。但是,如果顺序发生变化,或者某些行程被删除或插入新行程怎么办?我找不到一种机制来通知这一点。

我发现的唯一方法是@Query在 SwiftUI 中使用新的属性包装器。但我想在单独的类中观察 SwiftUI 环境之外的变化。有没有办法做到这一点?