swift 3 个结构数组 -> 转换为 NSObject -> 转换回 => 崩溃

swift 3 array of structs -> cast to NSObject -> cast back => crash

以下代码在 Swift 3 上崩溃,谁能解释一下原因?

struct S {
    let a:Int
}

let t = [S(a: 8)]
let u:AnyObject = t as NSObject
let v:[S] = u as! [S]

是因为在 Swift 3 中的结构数组是 NSObject(它不在 Swift 2 中)并且它无法很好地转换为 NSArray 吗?为什么是 NSObject?..

一个可能的解决方案是使用带有可选向下转换的条件绑定:

if let v = u as? [S] { /* */ }

不确定为什么强制向下转换不起作用。 NSObject.

可能会发生一些奇怪的事情