字典文字;添加一个数组

时间:2016-02-12 12:18:54

标签: swift

采取以下两个示例:为什么我不能从数组变量向字典文字添加数组?

这有效:

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],
                        ],
                ]
            }
        }
    }

2 个答案:

答案 0 :(得分:3)

问题与字典文字无关。在你的第一个案例中,

[ "array":["",""]]

可以转换为AnyObject,因为所有String都是自动的 必要时桥接到NSString。然后["",""]被桥接到 一个NSArray,整个表达式为NSDictionary

它在第二种情况下不起作用,因为无法将可选类型String?转换为AnyObject。如果将定义更改为

var myarray: [String] = []

然后编译没有问题。

答案 1 :(得分:0)

环顾四周,我找到了解决方案: ' as AnyObject'