Swift:创建一个Double值数组并将其保存到NSUserDefaults

时间:2014-07-05 09:28:51

标签: arrays swift nsuserdefaults

在我正在开发的应用程序中,我需要创建一个存储变量值的数组(money,这是一个double,当用户输入不同的值时会更改)。所以我的想法是从NSUSerDefaults键创建一个数组变量:

var moneyArray:Array = NSUserDefaults.standardUserDefaults().arrayForKey("MoneyArray")

然后我需要附加值:

 moneyArray.append(money)

现在我再次保存数组:

NSUserDefaults.standardUserDefaults().setObject(moneyArray,forKey:"MoneyArray")

在中间,我正在打印数组以查看值。但我无法执行此代码。每当我运行应用程序时,都会发生这种情况:

  1. 在控制台上我看到:致命错误:无法解包Optional.None (lldb)
  2. 我的代码突出显示,我看到了:主题1:EXC_BAD_INSTRUCTION ...
  3. 而且我不知道我做错了什么,或者我应该在哪里寻找更多关于此的信息......

1 个答案:

答案 0 :(得分:0)

我认为类型系统被arrayForKey搞糊涂了,因为它仍然会返回AnyObject!

我总是有一个包装属性:

var myArray : Array<Double>! {
get {
    if let myArray: AnyObject! = NSUserDefaults.standardUserDefaults().objectForKey("myArray") {
        println("\(myArray)")
        return myArray as Array<Double>!
    }

    return nil
}
set {
    println(myArray)
    NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "myArray")
    NSUserDefaults.standardUserDefaults().synchronize()
}
}