验证字典是有效的 plist(在保存到用户默认值之前)
Validate that a Dictionary is a valid plist (before saving to user defaults)
我想将来自未知来源的数据保存到 UserDefault。文档说字典必须是 valid Property List object。
如果字典不是有效的 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
我想将来自未知来源的数据保存到 UserDefault。文档说字典必须是 valid Property List object。
如果字典不是有效的 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