如何使用 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]
这是一个数组:
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]