The following (somewhat contrived) code works when Swift Optimization Level is set to None [-Onone] (default for debug):
let nsa = NSArray(array: ["foo", "bar"])
let a = nsa as [String]
But the app crashes (crash log) during run-time when set to Fastest [-O] (default for release).
I luckily discovered I can work around the issue by doing this:
let a = nsa as [AnyObject] as [String]
My question is two-fold:
This does seem to be a bug. I have not reported it to Apple. If someone else would like to take the time to do so, please do!
It seems to be fixed on Xcode Version 6.3.1 (6D1002).
And, not an answer to your original problem but as the new Swift 1.2 introduced, as is a forced cast, now replaced by more explicit as!. You should expect an NSArray to Array<T> where T != AnyObject or NSObject to crash.
You'd better use conditional cast as?. Avoid ! any time it's possible.
let nsa = NSArray(array: ["foo", "bar"])
if let a = nsa as? [String] {
println("a \(a)")
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With