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
.
可能会发生一些奇怪的事情
以下代码在 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
.