gpt4 book ai didi

swift - 为什么我无法转换混合类型字典的值并更新该值?

转载 作者:行者123 更新时间:2023-11-30 10:14:52 25 4
gpt4 key购买 nike

我试图回答另一个 StackOverflow 问题,发现我缺乏 Swift 知识。

下面是 Playground 代码,演示了我遇到的问题。

import Foundation

// How do I access the value of dictionary and update the value, without replacing it?
// How do I make the inner dictionary mutable?

var sampleDict = [
"dictionary" : [String: String](),
"array" : [String]()
]


(sampleDict["dictionary"] as! [String:String]).updateValue("avalue", forKey: "akey")
// ERROR: Swift.playground:12:27: error: immutable value of type '[String : String]' only has mutating members named 'updateValue'
//(sampleDict["dictionary"] as! [String:String]).updateValue("avalue", forKey: "akey")

(sampleDict["dictionary"] as! [String:String])["akey"] = "avalue"
// ERROR: Swift.playground:14:56: error: cannot assign to the result of this expression
// (sampleDict["dictionary"] as! [String:String])["akey"] = "avalue"

我的问题是

  • 如何访问混合类型字典的值并更新该值而不替换它?
  • 如何使内部字典可变?
  • 这根本不可能吗?

最佳答案

我认为这是不可能的。当查看 Dictionary 声明时,似乎没有方法可以更改值,只能替换它。这有点有意义,因为当您获取一个值时,它会返回字典中真实结构的副本(结构总是被复制)。当然,当使用类时它会起作用。这就是我的理论..

编辑:我刚刚发现它不需要转换为 [String: String] 和具有正确类型的字典即可工作:

var sampleDict = ["dictionary" : [String: String]()]
sampleDict["dictionary"]?.updateValue("avalue", forKey: "akey")
sampleDict["dictionary"]?["akey"] = "avalue"

关于swift - 为什么我无法转换混合类型字典的值并更新该值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30766348/

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