相关疑难解决方法(0)

SwiftUI:绑定数组的安全下标

我们习惯于在访问集合中的任何元素时使用安全下标。下面是我们的扩展。

extension Collection {
    subscript(safe index: Index) -> Element? {
        return indices.contains(index) ? self[index] : nil
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将它与绑定对象一起使用时,它给了我一个错误说

下标中的无关参数标签“安全:”

下面是有问题的代码

struct MyView: View {
    @ObservedObject var service: service

    var body: some View {
        List {
            ForEach(service.items.indices) { index in
                Toggle(isOn: self.$service.items[safe: index]?.isOn ?? false) {  // Error: Extraneous argument label 'safe:' in subscript
                    Text("isOn")
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

swift swiftui combine

5
推荐指数
1
解决办法
1073
查看次数

如果数组是 ObservableObject 的成员,如何绑定数组和 List?

我想创建MyViewModel它从网络获取数据然后更新结果数组。MyView应该订阅$model.results并显示List填充结果。

不幸的是,我收到一个关于“没有更多上下文的表达式类型不明确”的错误。

如何正确使用ForEach这种情况?

import SwiftUI
import Combine

class MyViewModel: ObservableObject {
    @Published var results: [String] = []

    init() {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
            self.results = ["Hello", "World", "!!!"]
        }
    }
}

struct MyView: View {
    @ObservedObject var model: MyViewModel

    var body: some View {
        VStack {
            List {
                ForEach($model.results) { text in
                    Text(text)
                 // ^--- Type of expression is ambiguous without more context
                }
            }
        }
    }
}

struct …
Run Code Online (Sandbox Code Playgroud)

swift swiftui combine swiftui-list

2
推荐指数
1
解决办法
1790
查看次数

标签 统计

combine ×2

swift ×2

swiftui ×2

swiftui-list ×1