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

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

这是一个数组:

var myArray = [1]

它包含 Int 个值。

这就是我在 NSUserDefaults 中保存数组的方式。这段代码似乎工作正常:

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

这是我加载数组的方式:

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

不过,上面的代码检索了一个错误。为什么?

您想将 AnyObject? 分配给 Int 数组,因为 objectForKey returns AnyObject?,所以你应该这样将它转换为数组:

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

如果之前没有保存任何值,它可能 return 为零,因此您可以通过以下方式检查它:

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

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

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

或者使用 nil 合并运算符 ??:

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

Swift 4:

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