首页 > 解决方案 > 将 SwiftUI Picker 绑定到字典中保存的值

问题描述

以下代码编译并运行,但只有绑定到数组中的值的选择器才能工作。那些在字典里的人失败了。任何想法为什么会这样?

import SwiftUI

struct ContentView: View {

    private var options : [String] = ["Bonjour", "Hello", "Hola"]

    @State private var choicesHeldInArray = [0, 2]
    @State private var choicesHeldInDict: [String: Int] = ["C3": 2, "C4":1]

    var body: some View {

        VStack {

            Picker(selection: $choicesHeldInArray[0], label: Text("Choice 1")) {
                ForEach(0 ..< options.count) {
                    Text(self.options[$0])
                }
            }

            Picker(selection: $choicesHeldInArray[1], label: Text("Choice 2")) {
                ForEach(0 ..< options.count) {
                    Text(self.options[$0])
                }
            }

            Picker(selection: $choicesHeldInDict["C3"], label: Text("Choice 3")) {
                ForEach(0 ..< options.count) {
                    Text(self.options[$0])
                }
            }

            Picker(selection: $choicesHeldInDict["C4"], label: Text("Choice 4")) {
                ForEach(0 ..< options.count) {
                    Text(self.options[$0])
                }
            }
        }
    }
}

标签: dictionarybindingswiftui

解决方案


答案可能是因为这个吗?

简而言之,您不能使用 ForEach,因为:

  • 它监视收藏并监视运动。使用无序字典是不可能的。

推荐阅读