当 Swift优化级别设置为无[-Onone] (默认为调试)时,以下(有点人为的)代码有效:
let nsa = NSArray(array: ["foo", "bar"])
let a = nsa as [String]
但是当设置为最快[-O] (默认发布)时,应用程序在运行时崩溃(crash log)。
我幸运地发现我可以解决这个问题:
let a = nsa as [AnyObject] as [String]
我的问题是双重的:
这似乎是一个错误。我没有向Apple报告。如果其他人愿意花时间这样做,请做!
答案 0 :(得分:1)
似乎修复了Xcode Version 6.3.1 (6D1002)
。
并且,不是对原始问题的回答,但是随着新的Swift 1.2的引入,as
是强制转换,现在被更明确的as!
取代。您应该NSArray
到Array<T>
,其中T != AnyObject or NSObject
会崩溃。
您最好使用条件转换as?
。
!