Reputation: 122
How can I save an array of Double in UserDefaults
?
How come my UserDefaults
evaluate to nil?
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")
}
}
Upvotes: 1
Views: 504
Reputation: 16361
You should be setting the value initially as an array of double [Double]
instead of just a single Double
. Modify to the below line:
UserDefaults.standard.set(Double(self.slid), forKey: "num")
To:
UserDefaults.standard.set([Double(self.slid)], forKey: "num")
Here is the complete code you'll need:
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"))
Upvotes: 1