是否可以将字典项绑定到TextField?

问题描述 投票:0回答:1

在 SwiftUI 中,我想在字典中存储一些键值对数据。我可以将字典中的项目绑定到 TextField 或其他需要绑定的地方吗?

我想做这样的事情:

@State var myDic: [String : String] = [
    "name": "Tim"
    "company": "Apple"
]

TextField("Name", text: $myDic["name"] ?? "")

行为所在:

  • 如果字典中存在“名字”:
    • 用户在 TextField 中编辑会更改该值。
    • 用户删除TextField中的内容(将其设置为“”),字典删除“name”项。
  • 如果字典中不存在“名字”:
    • 文本字段显示为空 ("")。
    • 用户设置的值将让字典添加该项目并分配值。
swift swiftui
1个回答
0
投票

我会创建一个自定义

Dictionary
下标。

extension Dictionary where Value == String {
    subscript(emptyStringAsNil key: Key) -> Value {
        get { self[key] ?? "" }
        set { self[key] = newValue.isEmpty ? nil : newValue }
    }
}

用途:

TextField("Foo", text: $myDic[emptyStringAsNil: "name"])
© www.soinside.com 2019 - 2024. All rights reserved.