簡體   English   中英

如何在iOS 12.0中的UserDefaults中保存對象數組。 使用任何數組[[String:Any]]

[英]How to Save Array of object in UserDefaults in iOS 12.0. using Any Array [[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()

它給了我這個警告:

在iOS 12.0中不推薦使用'archivedData(withRootObject :)':使用+ archivedDataWithRootObject:requiringSecureCoding:error:代替

如何解決此警告並達到在UserDefaults中保存對象數組的預期目標?

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)

您可以使用以下代碼歸檔數組:

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)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM