如何在 UserDefaults 中保存 Double 数组?

How can I save an array of Double in UserDefaults?

如何在 UserDefaults 中保存 Double 数组?

为什么我的 UserDefaults 评估为零?

print(UserDefaults.standard.object(forKey: "num")!)
if var o = UserDefaults.standard.object(forKey: "num") as? [Double] {
    o.insert(Double(self.slid), at: 0)
    print("opa \(o)")
    UserDefaults.standard.removeObject(forKey: "num")
    UserDefaults.standard.set(o, forKey: "num")
    if let z = UserDefaults.standard.object(forKey: "num") {
        print(z)
    }
} else {
    UserDefaults.standard.set(Double(self.slid), forKey: "num")
    if let z = UserDefaults.standard.object(forKey: "num") {
        print("kl \(z)")
    } else {
        print("nilo")
    }
}

您最初应该将值设置为双 [Double] 数组,而不是单个 Double。修改为下面一行:

UserDefaults.standard.set(Double(self.slid), forKey: "num")

收件人:

UserDefaults.standard.set([Double(self.slid)], forKey: "num")

这是您需要的完整代码:

if var array = UserDefaults.standard.object(forKey: "num") as? [Double] {
    array.insert(Double(self.slid), at: 0)
    UserDefaults.standard.set(array, forKey: "num")
} else {
    UserDefaults.standard.set([Double(self.slid)], forKey: "num")
}
print(UserDefaults.standard.object(forKey: "num"))