【问题标题】:Error when trying to save array using NSUserDefaults()尝试使用 NSUserDefaults() 保存数组时出错
【发布时间】:2015-12-17 21:17:46
【问题描述】:

我正在尝试使用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() 不能接受数组?还有其他选择吗?

提前致谢!

【问题讨论】:

    标签: ios arrays swift nsuserdefaults


    【解决方案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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      相关资源
      最近更新 更多