【问题标题】:NSKeyedArchiver nil values in Dictcionary字典中的 NSKeyedArchiver nil 值
【发布时间】:2019-07-07 13:08:52
【问题描述】:

我正在尝试使用 NSKeyedArchiver 将 Swift 字典转换为数据。我的问题是,如果字典的某些键值为 nil,那么 NSKeyedArchiver 应该如何处理它?它会将 nil 对象转换为 NSNull 之类的东西,还是会崩溃?

【问题讨论】:

    标签: ios swift nskeyedarchiver


    【解决方案1】:

    如果其中任何一个是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>" = "";})
    

    【讨论】:

    • 好吧,我的问题是另一种方式,其中 value 为 nil 但 key 不是。在这种情况下,预期的行为是什么?
    【解决方案2】:

    如果你翻一下@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 值转换为"&lt;null&gt;" 字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      相关资源
      最近更新 更多