我在想,这个问题可能很容易解决,但到目前为止我还没有找到解决方案.

我试图显示一个字典,并允许用户 Select 一个项目,这样我就可以自动访问他们 Select 的键和值

在列出词典时,我能够同时显示键和值--例如

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

但当用户做出 Select 时,我只能访问并打印密钥,而不能通过文本视图显示

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

不是:

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

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

我认为这可能与我将 Select 变量设置为:

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

我try 将其配置为:

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

but get err或 meessages f或 this.

如有任何建议,我们将不胜感激.

完整代码为:

imp或t 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) {
            F或Each(myList.keys.s或ted(), 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()
    }
}

推荐答案

正如您已经注意到的,selection只包含选定的关键点,而不包含值.要获得这些值,您需要像在HStack中那样使用这些键为myList属性添加下标.下面是一个例子:

Button(action: {
    let selectedValues = selection
        .compactMap { myList[$0] }
        .joined(separator: ", ")
    print("Selection is: \(selectedValues)")
}) {
    Text("Get")
        .padding()
}

我在这里使用compactMap而不是map,因为下标返回一个可选值,所以这将删除所有返回的nil值,并给出一个非可选字符串的列表.

Swift相关问答推荐

为什么Swift在某些链调用中不能对不可变值使用变异成员,而在其他链调用中则不能使用变异成员?

如何在Swift 中创建移动的uil标签?

如何将EnvironmentObject从UIKit视图控制器传递到SwiftUI视图

了解SWIFT中的任务行为

SWIFT异步/等待,多个监听程序

SwiftUI如何能够在Text中使用字符串字面量来创建LocalizedStringKey?

从 iPhone 中的安全飞地获取真正的随机数?

是否可以使用 .task 修饰符更新基于两个值的视图

TextField 键入未完成

使用 WrappingHStack 文本溢出到新行

Swift:创建用于调用 C 函数的指针数组

SwiftUI 4 列表初始化程序在 iOS 中不可用

Swift 读写图片占用大量内存

为什么更改属性后动画会加速? SwiftUI

Subclass.fetchRequest() Swift 3.0,扩展并没有真正帮助 100%?

将if let与逻辑或运算符一起使用

Swift 动画 WithDuration 语法是什么?

如何从元组数组创建字典?

如何使用 swift 将 Images.xcassets 中的图像加载到 UIImage 中

UITableViewAlertForLayoutOutsideViewHierarchy 错误:仅警告一次(iOS 13 GM)