采取以下两个示例:为什么我不能从数组变量向字典文字添加数组?
这有效:
class test{
var myarray: [String?] = []
var dictionary: [String: AnyObject]{
get {
return [
"object": [
"array":["",""],
],
]
}
}
}
但这不起作用? “Contextual type 'AnyObject' cannot be used with dictionary literal."
class test{
var myarray: [String?] = []
var dictionary: [String: AnyObject]{
get {
return [
"object": [
"array":[self.myarray],
],
]
}
}
}
答案 0 :(得分:3)
问题与字典文字无关。在你的第一个案例中,
[ "array":["",""]]
可以转换为AnyObject
,因为所有String
都是自动的
必要时桥接到NSString
。然后["",""]
被桥接到
一个NSArray
,整个表达式为NSDictionary
。
它在第二种情况下不起作用,因为无法将可选类型String?
转换为AnyObject
。如果将定义更改为
var myarray: [String] = []
然后编译没有问题。
答案 1 :(得分:0)
环顾四周,我找到了解决方案: ' as AnyObject'