gpt4 book ai didi

swift - 如何在 Swift 中枚举简写字典(或转换字典的所有键类型)?

转载 作者:行者123 更新时间:2023-11-28 09:49:02 29 4
gpt4 key购买 nike

我有一个类型为 [MyKeys : Any] 的字典。其中 MyKeys 是一个 EnumString 作为它的 rawValue。我需要将该键类型转换为 String。或者更确切地说,使用类型为 [String : Any] 的当前字典创建一个新字典。

到目前为止,我已经有了在 Playground 上玩过的这段代码。它有效,但我需要一个更高效(如果有的话)和更短的。

import UIKit

enum MyKey: String {
case aaa = "lalal"
}

func lolo(_ keyDic: [MyKey : Any]) {
var finalDic = [String : Any]()
for keyDic in keyDic.enumerated() {
let key = keyDic.element.key
let val = keyDic.element.value
finalDic[key.rawValue] = val
}

finally(finalDic)
}

func finally(_ dic: [String : Any]) {
print(dic)
}

lolo([MyKey.aaa : 123])

更新:

在等待答案的过程中,我发现了一个更好的方法:

var finalDic = [String : Any]()
keyDic.enumerated().map{( finalDic[$0.element.key.rawValue] = $0.element.value )}
finally(finalDic)

最佳答案

你的循环可以简化为

for (key, value) in keyDic {
finalDic[key.rawValue] = value
}

不一定更有效,但更短更简单的方法是:

let dict = [MyKey.aaa : 123]
let newDict = Dictionary(uniqueKeysWithValues: dict.map { ($0.key.rawValue, $0.value )})
print(newDict) // "lalal": 123]

原始字典映射到一系列转换后的键/值对,从中实例化新字典。

关于swift - 如何在 Swift 中枚举简写字典(或转换字典的所有键类型)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53045257/

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