首页 > 解决方案 > 如何在 iOS 12.0 的 UserDefaults 中保存对象数组。使用任何数组 [[String: Any]]

问题描述

我想在不使用 Codable 的情况下将对象数组保存在用户默认值中。

我尝试将其转换为数据数组并保存在用户默认值中:

 let childsArray = result["childs"] as? [[String: Any]]
 let childsData = NSKeyedArchiver.archivedData(withRootObject: childsArray!)
 UserDefaults.standard.set(childsData, forKey: "childsArray")
 UserDefaults.standard.synchronize()

它给了我这个警告:

'archivedData(withRootObject:)' 在 iOS 12.0 中已弃用:使用 +archivedDataWithRootObject:requiringSecureCoding:error: 代替

如何解决此警告并实现在 UserDefaults 中保存对象数组的预期目标?

标签: iosswiftios12

解决方案


let object1 = ["key1":"value1"]
let object2 = ["key2":"value2"]
let array = [object1, object2]
UserDefaults.standard.set(array, forKey: "childArray")
UserDefaults.standard.synchronize()

let storedArray = UserDefaults.standard.value(forKey: "childArray") as! [[String:String]]
print(storedArray)

推荐阅读