尝试使用NSUserDefaults()保存数组时出错

时间:2015-12-17 21:17:47

标签: ios arrays swift nsuserdefaults

我正在尝试使用NSUserDefaults()保存数组,以便即使在关闭程序后也可以访问数据。在过去的Ints和Strings中,我总是成功地使用它。但是,当我尝试保存数组时,它不起作用。这是一个例子:

 var superarray = [AnyObject?]()
    superarray.append("Test")
    superarray.append(3)
    superarray.append(NSDate()) //random examples

NSUserDefaults.standardUserDefaults().setObject(superarray, forKey: "AnyKey")

它给出错误:"无法转换类型' [AnyObject?]'预期的参数类型' AnyObject?' "

这是否意味着.setObject()无法接受数组?还有另一种选择吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

NSUserDefaults只能存储具有属性列表类型的对象。

提醒,plist仅限于这些对象:

  • NSData
  • NSString
  • NSNumber
  • NSDate
  • NSArray
  • 的NSDictionary

这里你可以使用NSMutableArray而不是你的可变数组

let superarray = NSMutableArray();
superarray.addObject("Test")
superarray.addObject(3)
superarray.addObject(NSDate())

NSUserDefaults.standardUserDefaults().setObject(superarray, forKey: "AnyKey")

此处有更多详情: http://www.codingexplorer.com/nsuserdefaults-a-swift-introduction/