我试图在一个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。
答案 0 :(得分:1)
这是??
和as?
之间的优先问题,已在6.3 beta 2中解决。??
在该版本中获得优先级,因此您现在也可以执行{ {1}}并将默认绑定到右侧。
如果我尝试使用1.2 beta 2版本的Swift,这可以按原样运行,所以我建议升级(因为这是旧版和新版测试版之间,而不是测试版和版本之间),而不是用括号括起来修复,这也将解决它。