尝试访问字典中的AnyObject数组成员时出错 - 有没有办法绕展开?

And*_*rin 4 ios swift

我有一个字典设置为:

var jDict = Dictionary<String, AnyObject[]>()
Run Code Online (Sandbox Code Playgroud)

数组是自定义按钮(JunkBut​​ton)或标签(JunkLabels)的集合.

我在尝试访问Dictionary中包含的数组成员时遇到问题,如下所示:

let thisArray = jDict[key]
var aButton = thisArray[0]  //Gives error: 'AnyObject[]? does not have a member named 'subscript'
Run Code Online (Sandbox Code Playgroud)

我可以通过向下转换整个数组来解决这个问题,如下所示:

if let aArray = thisArray as? JunkButton[]{
    var aButton = aArray[0]
}
Run Code Online (Sandbox Code Playgroud)

这看起来非常麻烦,特别是如果我确定我知道阵列是由什么类型预先组成的.是否有一种方法可以在创建thisArray时使用它来提取其元素而不必每次都将它们展开?

Bry*_*hen 6

Dictionary永远给你Optional价值.

你的代码是这样的

let thisArray : Optional<AnyObject[]> = jDict[key]
Run Code Online (Sandbox Code Playgroud)

您需要打开它以获得非可选值

let thisArray = jDict[key]! // thisArray is AnyObject[]
Run Code Online (Sandbox Code Playgroud)