我不知道提前的数据类型,如何在没有类型的情况下将数据添加到空字典中。看起来有人在这里问了同样的问题,但没有接受答案How to create Dictionary that can hold anything in Key? or all the possible type it capable to hold
Swift编译器错误:
无法指定此表达式的结果。
我在b["test"] = 23
此行中收到此错误。
var a = [String:Int]()
a["test"] = 23 # Works
var b = [:]
b["test"] = 23 # Compiler Error
答案 0 :(得分:1)
在您的示例中,b
的类型为NSDictionary
,这是不可变的。因此,在尝试修改其内容时会出错。
您需要将b
声明为NSMutableDictionary
才能使其发挥作用:
let dictionary: NSMutableDictionary = [:]
dictionary["key"] = "value" // No errors.
答案 1 :(得分:1)
您也可以将第二个字典声明为Swift字典,但使用AnyObject
作为值类型:
var b = [String:AnyObject]()
然后你可以这样做:
b["test"] = 23
b["stuff"] = "hello world"
此值的类型为AnyObject
,因此您必须在检索它时将其强制转换:
let result = b["test"] as! Int
let sentence = b["stuff"] as! String
或
if let result = b["test"] as? Int {
// use result (23)
}
if let sentence = b["stuff"] as? String {
// use sentence ("hello world")
}
答案 2 :(得分:1)
var b:[NSObject:AnyObject] = [:]
b["test"] = 23
b[1] = "one"
b // ["test": 23, 1: "one"]