我有一个存储在NSUserDefaults中的数组作为对象。
var defaults = NSUserDefaults.standardUserDefaults()
var details = [1,2,3]
defaults.setObject(details, forKey: "testing_array")
// this is wrong
var percentArray : Array? = defaults.objectForKey("testing_array") as Array
如何检索并将其用作数组?如果我将它设置为anyObject,我以后就不能将它用作数组。
答案 0 :(得分:1)
而不是:
var percentArray : Array? = defaults.objectForKey("testing_array") as Array
写:
var percentArray : Array<Int>? = defaults.objectForKey("testing_array") as? Array<Int>
因为在转换为数组时,您还需要指定它的泛型类型。
修改强>
基于亚马的评论。您也可以使用:
var percentArray = defaults.objectForKey("testing_array") as [Int]
答案 1 :(得分:1)
objectForKey的结果可以作为AnyObject数组进行转换,也就是[AnyObject]?
你不能把它作为数组,因为那是一个通用的,你只能转换为特定的类。
正如Midhun指出的那样,在这种特定情况下,你实际上有一个Int数组,所以你可以使用更具体的[Int]?
为了更加安全,请使用if let
构造来验证投射:
if let percentArray = defaults.objectForKey("testing_array") as? [Int] {
println(percentArray)
}
答案 2 :(得分:1)
如果你知道它是一个Int数组的事实,只需向Swift解释它是一个Int数组(通过强制转换):
var percentArray = defaults.objectForKey("testing_array") as [Int]