Swift UserDefaults 从数组中获取值

Swift UserDefaults get values from array

我有 UserDefaults 数组,例如:

let userValue = ["name": self.nameLbl.text ?? "", "lastName": self.lastNameLbl.text ?? "", "city": cityLbl.text ?? ""] as! [String : String]
var userArray = UserDefaults.standard.array(forKey: "userInfo") as? [[String: String]] ?? []
userArray.append(userValue)
UserDefaults.standard.set(userArray, forKey: "userInfo")

如何获取要打印类型的键值示例

[["name": .., "lastName":..,],["name": .., "lastName":..,],["name": .., "lastName":..,]...]

如果我这样打印:

if let array = UserDefaults.standard.array(forKey: "userInfo") as? [[String: String]] {
    for dictionary in array {
        print(dictionary["name"])
        print(dictionary["lastName"])
        print(dictionary["city"])
    }
}

在控制台中获取:

Lars James Ulrich Hetfield Gentofte California

我想要这样:[[ Lars, Ulrich,Gentofte],[James, Hetfield, California]]

要将 key-value 对添加到现有数组,您只需将 userValue 附加到您的数组。喜欢:

    let userValue = ["name": self.nameLbl.text ?? "", "lastName": self.lastNameLbl.text ?? "", "city": cityLbl.text ?? ""] as! [String : String]
    var userArray = UserDefaults.standard.array(forKey: "userInfo") as? [[String: String]] ?? []

    // Append the userValue to userArray
    userArray.append(userValue)

    UserDefaults.standard.set(userArray, forKey: "userInfo")

要从数组中获取 dictionary,您可以使用

    if let array = UserDefaults.standard.array(forKey: "userInfo") as? [[String: String]] {
        for dictionary in array {
            print(dictionary["name"])
            print(dictionary["lastName"])
            print(dictionary["city"])
        }
    }

您必须在数组中添加 key-value 对,然后打印数组。你会得到你想要的答案

let userValue = ["name": self.nameLbl.text ?? "", "lastName": self.lastNameLbl.text ?? "", "city": cityLbl.text ?? ""] as! [String : String]
        var userArray = UserDefaults.standard.array(forKey: "userInfo") as? [[String: String]] ?? []

        // Appending the different -2 userValue to userArray
        userArray.append(userValue)
        userArray.append(userValue)

        UserDefaults.standard.set(userArray, forKey: "userInfo")

        if let array = UserDefaults.standard.array(forKey: "userInfo") as? [[String: String]] {

       var dataValues = Array<Any>()
       array.forEach { (object) in
       dataValues.append(Array(object.values))
      }
    print(dataValues)

 }

这里可以查看演示:

let userValue = ["name": "j", "lastName":  "o", "city":  "g"] as! [String : String]

// Appending the different -2 userValue to userArray
var a = [userValue, userValue, userValue]

var b = Array<Any>()
a.forEach { (object) in
    b.append(Array(object.values))
}
print(b)