【发布时间】:2014-11-24 02:48:12
【问题描述】:
我正在编写一个可以从 JSON 中解析类型化 ID 的库。但是,我发现类型转换规则有点令人费解。
例子:
class AccountId : NSString { }
let json : AnyObject? = "user-1" // Returned by NSJSONSerialization.JSONObjectWithData
let s = json as? NSString // Succeeds, s == Some("user-1")
let a = json as? AccountId // Fails, a == nil
为什么第一次类型转换成功而第二次失败? NSString 有什么神奇之处,它不会交叉到仅限 Swift 的类?
我使用的是 XCode 版本 6.1 (6A1030)(撰写本文时的最新版本)。
【问题讨论】: