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)
但是,上面的代码检索错误.为什么?
您应该使用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)
你想要一个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)
| 归档时间: |
|
| 查看次数: |
2894 次 |
| 最近记录: |