Cesare Cesare - 6 months ago 22
Swift Question

How do I save an Int array in Swift using NSUserDefaults?

This is an array:

var myArray = [1]


It contains
Int
values.

This is how I save an array in
NSUserDefaults
. This code seems to be working fine:

NSUserDefaults.standardUserDefaults().setObject(myArray, forKey: "myArray")


This is how I load an array:

myArray = NSUserDefaults.standardUserDefaults().objectForKey("myArray")


The code above, though, retrieves an error. Why?

Answer

You want to assign an AnyObject? to an array of Ints, beacuse objectForKey returns AnyObject?, so you should cast it to array this way:

myArray = NSUserDefaults.standardUserDefaults().objectForKey("myArray") as [Int]

If there are no values saved before, it could return nil, so you could check for it with:

if let temp = NSUserDefaults.standardUserDefaults().objectForKey("myArray") as? [Int] {
    myArray = temp
}