带有nil的字典:AnyObject没有名为' Key'的成员。

时间:2014-08-13 21:16:57

标签: swift

为什么这不可能?

var d = [AnyObject]()
d.append(["item": nil])

我收到错误:AnyObject does not have a member named 'Key'

2 个答案:

答案 0 :(得分:2)

代码     [“item”:nil] 建议你尝试添加一个字典元素,但是你做了一个看起来像数组的东西。

此代码:var d = [AnyObject]()创建一个数组,字典的等效项为:'var d = String:AnyObject。

执行此操作的其他方法是:

var d : [AnyObject] = []

表示空数组或

var d : [String : AnyObject] = [:]

表示空字典,带有字符串键。

请注意,您将无法将键的值存储为“nil”,因为没有值的键的所有值都是nil。要将关键项重置为nil,您可以使用:

d["item"] = nil

连接(加入)词典和添加项目,你不能像在数组中那样使用+ =或.append,但对于你可以使用的单行程序:

for a : (key : String, value : String) in dictA { dictB[a.key] = a.value }

字典与数组不同,例如您不能为同一个密钥设置多个值。您可以创建键值对的数组并轻松地将它们连接起来,例如:

var empty : [(String , String)] = []

var full : [(String , String)] = [("A","1"), ("B","2")]

empty += full

但请注意,如果您多次执行此操作,则很容易就会出现重复项。

答案 1 :(得分:0)

[AnyObject]AnyObject的数组,因此值必须是对象(类的实例)。 ["item": nil]是一个字典文字,用于初始化Dictionary(结构,而不是类)或DictionaryLiteralConvertible的其他类型。编译器无法确定您希望该文字的类型。