我NSKeyedArchiver.archivedDataWithRootObject(obj)
用来将对象转换为NSData
. 该archivedDataWithRootObject(obj)
方法要求其参数为NSObject
,符合NSCoding
。
我尝试归档 Swift String
s、Array
s 和Dictionary
s,并且效果很好。所以我认为String
是NSObject
符合NSCoding
.
我还在操场上检查了这段代码,以确认它String
是NSObject
:
var str = "Hello, playground"
let isObject = (str is NSObject) // isObject is true
但是当我导航到String
的定义(使用 Cmd + 单击)时,它显示这String
是一个struct
. 我找不到显示它String
是NSObject
.
public struct String {
/// An empty `String`.
public init()
}
那么,为什么在String
定义中,我找不到显示它的String
代码NSObject
?为什么结构可以是一个NSObject
?