AnyObject into Array的可选转换会产生错误

时间:2015-03-12 09:28:26

标签: arrays swift casting

我试图在一个AnyObject类型上对一个int数组进行可选的转换,如果它是nil,将使用合并运算符存储一个空数组。代码:

import UIKit

let arrayAsAnyObject: AnyObject = [3, 4]

let arrayAsInts: [Int] = arrayAsAnyObject as? [Int] ?? [] // causes issue

这给了我以下问题:

  

现在使用元素类型

周围的括号编写数组类型

如果我点击“修复它”按钮,它会用

替换最后一行
let arrayAsInts: [Int] = arrayAsAnyObject as? [[Int] ??[]

这显然无法解决这个问题。任何想法为什么会发生这种情况以及如何解决它?我正在使用Xcode 6.3 beta和Swift 1.2。

1 个答案:

答案 0 :(得分:1)

这是??as?之间的优先问题,已在6.3 beta 2中解决。??在该版本中获得优先级,因此您现在也可以执行{ {1}}并将默认绑定到右侧。

如果我尝试使用1.2 beta 2版本的Swift,这可以按原样运行,所以我建议升级(因为这是旧版和新版测试版之间,而不是测试版和版本之间),而不是用括号括起来修复,这也将解决它。