验证字典是否为有效的 plist(在保存到用户默认值之前)



我想将数据从未知来源保存到UserDefault。 文档说字典必须是有效的属性列表对象。

如果字典不是有效的 plist,则应用崩溃。

class A {}
let invalidDict = [ "Key" : A() ]
UserDefaults.standard.set(invalidDict, forKey: "Key") 
// error: Execution was interrupted, reason: signal SIGABRT

我希望它只记录问题而不是崩溃。 用 do catch 块包围是行不通的。

有没有办法防止崩溃或验证任意字典是否为有效的 plist 格式?

class A {}
let invalidDict = [ "Key" : A() ]
PropertyListSerialization.propertyList(invalidDict, isValidFor: .binary) // false

let validDict = [ "Key" : "howdy" ]
PropertyListSerialization.propertyList(validDict, isValidFor: .binary) // true

相关内容

  • 没有找到相关文章

最新更新