如何使用NSUserDefaults在Swift中保存Int数组?

时间:2015-01-28 16:12:44

标签: arrays swift nsuserdefaults

这是一个数组:

var myArray = [1]

它包含Int个值。

这就是我在NSUserDefaults中保存数组的方法。这段代码似乎运行正常:

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

这就是我加载数组的方式:

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

但上面的代码检索错误。为什么呢?

3 个答案:

答案 0 :(得分:5)

您希望将AnyObject?分配给Int的数组,因为 objectForKey返回AnyObject?,因此您应该以这种方式将其转换为数组:

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

如果之前没有保存任何值,则可以返回nil,因此您可以使用以下命令检查它:

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

答案 1 :(得分:3)

您应该使用if let来解包您的可选值以及条件转换。顺便说一句,您还应该使用arrayForKey,如下所示:

if let myLoadedArray = UserDefaults.standard.array(forKey: "myArray") as? [Int] {
    print(myLoadedArray)
}

或使用nil合并运算符??

let myLoadedArray = UserDefaults.standard.array(forKey: "myArray") as? [Int] ?? []

答案 2 :(得分:0)

Swift 4:

myArray : [Int] = UserDefaults.standard.object(forKey: "myArray") as! [Int]