gpt4 book ai didi

SwiftUI:绑定(bind)数组的安全下标

转载 作者:行者123 更新时间:2023-12-01 14:30:54 28 4
gpt4 key购买 nike

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

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

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

Extraneous argument label 'safe:' in subscript



下面是有问题的代码
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")
}
}
}
}
}

最佳答案

两个问题:

  • 你不需要使用 items[safe: index] ,因为 items.indices 只为您提供有效索引.您永远不会有超出数组范围的索引。
  • 你不能使用 items[safe: index] ,因为 self.$service.items 是 Binding<[Item]> ,这不是一个集合,因此您对 Collection 的扩展不适用。

  • 只需删除 safe:你可以走了。

    this answer结尾了解更多详情。

    关于SwiftUI:绑定(bind)数组的安全下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58082208/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com