You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中通过列表选择字典键值对时无法获取并显示对应值的问题求助

SwiftUI中通过列表选择字典键值对时无法获取并显示对应值的问题求助

各位好,我觉得这个问题应该挺容易解决的,但我找了半天都没找到可行的方案,想请大家帮忙看看。

我现在要做的是在SwiftUI里展示一个字典,让用户可以选择其中的条目,这样之后我能通过代码同时拿到选中条目的键和值。

目前我已经能在列表里正常显示每个条目的键和值了,代码大概是这样:

Text("Key:\t\t\(item)\t\t\t")
Text("Value:\t\(myList[item] ?? "")")

但问题来了:当用户选中条目后,我只能获取到键,而且只能用print输出,没法用Text视图显示出来。比如这样打印是正常的:

print("Selection is:\($selection)")

但换成Text就不行,不管是这么写:

Text("Selection is:\(selection)")

还是这么写:

Text("Selection is:\($selection)")

都没法正常显示选中的内容。

我猜这个问题可能和我定义选中状态变量的方式有关,我现在是这么声明的:

@State private var selection = Set<String>()

我试过把它改成Set<String:String>(),结果直接报错了,完全不知道该怎么调整。

麻烦各位给我点建议,谢谢啦!

我的完整代码如下:

import SwiftUI

struct ContentView: View {

    var myList = ["Chumbawumba": "7", "Jini Dosa": "2", "Handbrake": "13"]

    @State private var selection = Set<String>()

    var body: some View {

        List(selection: $selection) {

            ForEach(myList.keys.sorted(), id: \.self) { item in

                HStack {

                    Text("Key:\t\t\(item)\t\t\t")

                    Text("Value:\t\(myList[item] ?? "")")

                    Spacer()

                }

            }

        }

//        Text("Selection is:")
//        Text(selection)
//        Text("Selection is:\(selection)")

        Button(action: {

            print("Selection is:\(selection)")

        }) {

            Text("Get")
                .padding()

        }
        .padding()

    }

}

备注:内容来源于stack exchange,提问作者boristheslug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:43:06