得到错误在尝试存储诠释,arrayof [字符串]一对userDefaults
self.fetchMin(forStartDate: start, toEndDate: end) { (min, chal) in
guard let mins = min, let challenges = chal else {
return
}
let dict: [Int : [String]] = [mins:challenges]
UserDefaults.standard.set(dict, forKey: "WeekStates")
}
嗨,在上面的程序我想存储在userDefaults键和阵列对字符串的,但如果我这样做是意外崩溃。得到错误在尝试存储诠释,arrayof [字符串]一对userDefaults
如果我尝试一个值,它的工作。
如:
`let dict: [String] = challenges
UserDefaults.standard.set(dict, forKey: "WeekStates")
https://developer.apple.com/documentation/foundation/userdefaults
的UserDefaults类提供用于访问 常见类型如浮标方便的方法,双打,整数,布尔值,和URL。 A 默认对象必须是一个属性列表 - 也就是,一个实例(或对于集合的一个实例,组合):NSData,NSString, NSNumber,NSDate,NSArray或NSDictionary。如果你想 存储任何其他类型的对象,你通常应该将其存档到 创建一个NSData的实例。有关更多详细信息,请参阅首选项和 设置编程指南。
你可以做这样的事情。
let dict: [Int : [String]] = [1:["iOS Dev"]]
UserDefaults.standard.set(NSKeyedArchiver.archivedData(withRootObject: dict as NSDictionary) as NSData, forKey: "4WeekStates")
if let unarchivedObject = UserDefaults.standard.object(forKey: "4WeekStates") as? Data {
let dic = NSKeyedUnarchiver.unarchiveObject(with: unarchivedObject as Data) as? NSDictionary
print(dic!)
}
当你在最后一点提到我试图[String]
它的工作原理。
我不确定您是否可以存储类型为[Int : [String]]
的数据,因为我的知识UserDefaults
属性列表只能接受某些类型的变量,所以它具有此限制。您可以存储的变量这些类型:
Array
Data
Date
Dictionary
NSNumber
String
我保存它只有一本字典。 – Gurunathan
您不能以NSNumber或Int为关键字来存储字典 –
什么ü面临崩溃 –
的libC++ abi.dylib:与类型NSException @ Anbu.Karthik – Gurunathan
的未捕获的异常终止其NSException可以显示完整的崩溃报告 –