在UserDefaults

时间:2018-02-19 22:38:16

标签: swift nsuserdefaults

我想在UserDefaults中保存一个对象数组

let thisAction = action(ts: String(Date().timeStamp()), winner: winner)
actions.append(thisAction)
UserDefaults.standard.set(actions, forKey: "currentMatch")
UserDefaults.standard.synchronize()

但我有以下错误:

  

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'尝试插入非属性列表对象

1 个答案:

答案 0 :(得分:0)

尝试Objective-C对象(NSArray,NSDictionary) https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/UserDefaults/AccessingPreferenceValues/AccessingPreferenceValues.html#//apple_ref/doc/uid/10000059i-CH3-97383

声明可以保存,获取NSData,NSDate,NSString,NSNumber,NSArray,NSDictionary和NSURL类型的对象。

所以,一个可能的解决方案是:

NSArray

Swift数组和字典可以分别桥接NSDictionarypublic class ProductController{ ... public ViewResult List(int page = 1){

您也可以使用Codable,它也可以序列化属性列表。