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

Ces*_*are 5 arrays nsuserdefaults swift

这是一个数组:

var myArray = [1]
Run Code Online (Sandbox Code Playgroud)

它包含Int值.

这就是我保存数组的方法NSUserDefaults.这段代码似乎工作正常:

NSUserDefaults.standardUserDefaults().setObject(myArray, forKey: "myArray")
Run Code Online (Sandbox Code Playgroud)

这是我加载数组的方式:

myArray = NSUserDefaults.standardUserDefaults().objectForKey("myArray")
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码检索错误.为什么?

Leo*_*bus 6

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

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

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

let loadedArray = UserDefaults.standard.array(forKey: "myArray") as? [Int] ?? []
Run Code Online (Sandbox Code Playgroud)


Dán*_*agy 5

你想要一个s AnyObject?的数组Int,beacuse objectForKey返回AnyObject?,所以你应该这样将它强制转换 为数组:

myArray = NSUserDefaults.standardUserDefaults().objectForKey("myArray") as [Int]
Run Code Online (Sandbox Code Playgroud)

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

if let temp = NSUserDefaults.standardUserDefaults().objectForKey("myArray") as? [Int] {
    myArray = temp
}
Run Code Online (Sandbox Code Playgroud)