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