Search code examples
arraysswiftnsuserdefaults

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?


Solution

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