Swift优化级别将NSArray转换为Array

时间:2014-12-29 19:32:01

标签: swift nsarray

Swift优化级别设置为无[-Onone] (默认为调试)时,以下(有点人为的)代码有效:

    let nsa = NSArray(array: ["foo", "bar"])
    let a = nsa as [String]

但是当设置为最快[-O] (默认发布)时,应用程序在运行时崩溃(crash log)。

我幸运地发现我可以解决这个问题:

    let a = nsa as [AnyObject] as [String]

我的问题是双重的:

  1. 你能帮我理解为什么会这样吗?
  2. 有没有更好的方法将NSArray转换为数组?
  3. 更新

    这似乎是一个错误。我没有向Apple报告。如果其他人愿意花时间这样做,请做!

1 个答案:

答案 0 :(得分:1)

似乎修复了Xcode Version 6.3.1 (6D1002)

并且,不是对原始问题的回答,但是随着新的Swift 1.2的引入,as是强制转换,现在被更明确的as!取代。您应该NSArrayArray<T>,其中T != AnyObject or NSObject会崩溃。

您最好使用条件转换as?

!