5

以下代码在 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?

4

1 回答 1

2

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

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

不知道为什么强制向下转换不起作用。可能会发生一些时髦的事情NSObject

于 2016-10-19T15:32:57.550 回答