swift – 如何在字典中改变数组?

swift – 如何在字典中改变数组?,第1张

概述我在游乐场尝试了以下内容: var d1 = [String: [String]]()d1["a"] = [String]()var a1 = d1["a"]!a1.append("s1")println(d1) 输出是:[a:[]] 我希望:[a:[“s1”]] 在字典改变数组的正确方法是什么? 在swift中,结构在被赋值给新变量时按值复制.因此,当您将a1分配给字典中的值时,它 我在游乐场尝试了以下内容:

var d1 = [String: [String]]()d1["a"] = [String]()var a1 = d1["a"]!a1.append("s1")println(d1)

输出是:[a:[]]
我希望:[a:[“s1”]]

在字典中改变数组的正确方法是什么?

解决方法 在swift中,结构在被赋值给新变量时按值复制.因此,当您将a1分配给字典中的值时,它实际上会创建一个副本.这是我正在谈论的界限:

var a1 = d1["a"]!

一旦调用该行,实际上有两个列表:d1 [“a”]引用的列表和a1引用的列表.因此,当您调用以下行时,只会修改第二个列表:

a1.append("s1")

当您进行打印时,您将打印第一个列表(存储为字典d1中的键“a”).以下是两种可用于获得预期结果的解决方案.

选项1:直接附加到d1内的数组.

var d1 = [String : [String]]()d1["a"] = [String]()d1["a"]?.append("s1")println(d1)

选项2:附加到复制的数组并将该值分配给d1中的“a”.

var d1 = [String : [String]]()d1["a"] = [String]()var a1 = d1["a"]!a1.append("s1")d1["a"] = a1println(d1)

第一种解决方案性能更高,因为它不会创建列表的临时副本.

总结

以上是内存溢出为你收集整理的swift – 如何在字典中改变数组?全部内容,希望文章能够帮你解决swift – 如何在字典中改变数组?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1010271.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存