【发布时间】:2019-07-07 13:08:52
【问题描述】:
我正在尝试使用 NSKeyedArchiver 将 Swift 字典转换为数据。我的问题是,如果字典的某些键值为 nil,那么 NSKeyedArchiver 应该如何处理它?它会将 nil 对象转换为 NSNull 之类的东西,还是会崩溃?
【问题讨论】:
标签: ios swift nskeyedarchiver
我正在尝试使用 NSKeyedArchiver 将 Swift 字典转换为数据。我的问题是,如果字典的某些键值为 nil,那么 NSKeyedArchiver 应该如何处理它?它会将 nil 对象转换为 NSNull 之类的东西,还是会崩溃?
【问题讨论】:
标签: ios swift nskeyedarchiver
如果其中任何一个是nil 或两者都不会崩溃
let key:String! = nil
let data = NSKeyedArchiver.archivedData(withRootObject:[key:""])
print(data) // 289 bytes
let res = try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data)
print(res) // Optional({"<null>" = "";})
【讨论】:
如果你翻一下@Sh_Khan 写的内容,你就会得到答案:
let key : String? = nil
let data = try! NSKeyedArchiver.archivedData(withRootObject: ["test":key], requiringSecureCoding: false)
print(data) // 293 bytes
let res = try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data)
print(res) // Optional({ test = "<null>"; })
它将nil 值转换为"<null>" 字符串。
【讨论】: