所以我在Swift开始了一个项目,我遇到了这个问题:
这段代码有效:
var dictionary = ["a":"valueOfA","b":"valueOfB","c":"valueOfC"] println(dictionary) dictionary["c"] = "newValOfC" println(dictionary)
这不是:
var dictionary = [:] dictionary = ["a":"valueOfA","b":"valueOfB","c":"valueOfC"] println(dictionary) dictionary["c"] = "newValOfC" println(dictionary)
给出错误:
Playground execution failed: error::35:17: error: cannot assign to the result of this expression dictionary["c"] = "newValC" ~~~~~~~~~~~~~~~ ^
请注意,这不是常量值
那么为什么不行
dictionary = ["a":"valueOfA","b":"valueOfB","c":"valueOfC"]
给出错误?
由于上下文没有提供足够的信息来推断类型,你需要明确地将它命名为字典,否则swift假定它是一个NSDictionary
(我不清楚为什么会这样.我假设为了更好的obj-c兼容性) :
以下代码均有效:
// Playground import UIKit var str:NSString = "Hello, playground" var d0 = [:] var d1: Dictionary = [:] d0.setValue(UIWebView(), forKey: "asdf") d1["asdf"] = 1 d1["qwer"] = "qwer"