[英]Dictionaries not working inside a struct SWIFT
为什么这不起作用!?
struct ChocolateBox {
var caramelDelight = []
caramelDelight["flavor"] = "caramel"
}
我试过这个没有结构,仍然无法正常工作:
var caramelDelight = []
caramelDelight["flavor"] = "caramel"
我必须在数组中添加初始值才能使其工作,例如:
var caramelDelight = ["test":"test"]
caramelDelight["flavor"] = "caramel"
请解释。
你的var caramelDelight = []
不会创建一个空字典。
要创建空字典,请使用[:]()
并指定键和值的类型,例如: var caramelDelight = [String:String]()
。
还有这种替代语法: var caramelDelight: [String:String] = [:]
。
另外要修改struct中的var,首先需要创建struct的实例:
struct ChocolateBox {
var caramelDelight = [String:String]()
}
var cb = ChocolateBox()
cb.caramelDelight["flavor"] = "caramel"
println(cb.caramelDelight) // [flavor: caramel]
更新:
如果需要预填充字典,还可以为结构创建初始化程序:
struct ChocolateBox {
var caramelDelight: [String:String]
init(dict: [String:String]) {
self.caramelDelight = dict
}
}
var cb = ChocolateBox(dict: ["flavor": "caramel"])
当然,您可以像往常一样更新字典:
cb.caramelDelight["color"] = "brown"
println(cb.caramelDelight) // [color: brown, flavor: caramel]
那是因为caramelDelight
实际上是一个数组,而不是字典。 您可以通过执行var caramelDelight: [String:String] = [:]
来解决这个var caramelDelight: [String:String] = [:]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.