ios - 如何在 iOS 12.0 的 UserDefaults 中保存对象数组。使用任何数组 [[String : Any]]

标签 ios swift ios12

我想在不使用 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:)' was deprecated in iOS 12.0: Use +archivedDataWithRootObject:requiringSecureCoding:error: instead

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

最佳答案

您可以使用以下代码归档数组:

do {
    let childsData = try NSKeyedArchiver.archivedData(withRootObject: childsArray!, requiringSecureCoding: true)
    UserDefaults.standard.set(childsData, forKey: "childsArray")
    UserDefaults.standard.synchronize()
} catch {
    print(error)
}

并使用以下代码取消归档对象:

do {
    let childData = UserDefaults.standard.value(forKey: "childsArray")
    if let childArray = try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(childData as! Data) {
        print(childArray)
    }
} catch {
    print(error)
}

关于ios - 如何在 iOS 12.0 的 UserDefaults 中保存对象数组。使用任何数组 [[String : Any]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54123466/

相关文章:

ios - 需要做什么才能遵守 iOS 上 voip 应用程序的音量/铃声设置?

ios - 无法在 iOS 12.4.1 (iPhone XR) 中使用 CNContactStore 获取联系人。即使在 13 beta 或 12.4.1 以下也能正常工作

ios - 如何淡出 iOS 12 上的 titleView 标签

swift - 计算有多少自定义注释被添加到 mapView swift 4

swift - 在真实设备上快速测试地理点进行解析

ios - React native 升级 - pod install 为 config = use_native_modules 抛出错误

ios - PFUser currentUser 没有正确保存/检索自定义属性

iphone - ios 4.3.x 和 5.0 录音后声音中有噪音

swift - 如何在 Swift 中将图像添加到 ARSCNScene?