从SWIFT 5.5开始,我们可以创建具有如下绑定的SwiftUI列表(例如,请参见this answer):

class Item {
    // ...
    var isOn: Bool
}

struct ContentView: View {
    @State private var items: [Item] = []
    var body: some View {
        NavigationView {
            List {
                ForEach($items) { $item in     // <--- list binding
                    Toggle(isOn: $item.isOn) {
                        Text("Vibrate on Ring")
                    }
                }
            }
        }
    }
}

现在,我想对SwiftData执行类似的操作,但收到错误:

struct ContentView: View {
    @Environment(\.modelContext) private var modelContext
    @Query private var items: [Item]
    var body: some View {
        NavigationView {
            List {
                ForEach($items) { $item in //   <--- Cannot find '$items' in scope
    // ...

如何呈现允许通过绑定内联编辑对象的SwiftData对象列表?

推荐答案

您可以利用新的Bindable,它有一个下标操作符来将底层数据包装到绑定变量中:

ForEach(items) { item in
    Toggle(isOn: Bindable(item).isOn) { ... }
}

Ios相关问答推荐

React Native Text组件内部TextInput组件在iOS上的问题:在TextInput组件内部键入文本时失go 焦点

如何使视图完全适合屏幕,而不会在旋转时溢出手机屏幕的边界?

如何防止UITest套件与Fastlane一起执行?

无法关闭包含字体 Select 器的工作表

SwiftUI 点击列表内不会触发 Select

AVAudioRecord 没有音频

RFID scanner 的蓝牙服务 UUID?

UIView 阴影不适用于自定义扩展

iOS 16 堆栈视图中按钮的奇怪动画

来自 c++ 的runtime_error未在 iOS 中捕获

XCode 14 Beta 中 NavigationStack 的正文渲染问题

滑动以返回特定的 SwiftUI 视图

无法同时满足约束 - 没有适当的约束

使用导航控制器在prepareForSegue中设置数据

Swift枚举继承

如何比较两个 UIImage 对象

无效的 iPhone 应用程序二进制文件

使用 swift 从应用程序委托打开视图控制器

iOS 中的 Google Analytics SDK 3.0 _sqlite3 链接器错误

将 struct 保存到 UserDefaults