我想通过NSUSerdefult将数据保存到字典数组中。
每次用户运行应用程序时,我都希望将详细信息附加到NSUSerdefaults中现有的字典数组中。
问题是数据没有附加到数组,因为array.count始终为1,因此一个结果总是被覆盖并且不会附加到NSUSerdefults中的现有数组。
// Instance var
let defaults = NSUserDefaults.standardUserDefaults();
// Array to save to NSUserdef
deaultScoreResults = [Dictionary<String, String>]();
// Save to NSUSer
deaultScoreResults.append(["CaseResult":caseNumberString+"/Study Up!"])
defaults.setObject(deaultScoreResults, forKey: "userScoreForCase");
// Retrieve in a diff vc
if let scoreValueArray : [Dictionary<String, String>] = defaults.objectForKey("userScoreForCase") as? Array{
for dict_Result in scoreValueArray{....
也许用户默认值不是最适合将附加数据保存到现有数据的方法,还是核心数据在这里会得到更多认可?
赞赏任何输入
答案 0 :(得分:1)
有一段时间我有类似的问题,不确定它是否是故意的。尝试将字典强制转换为NSDictionary,然后再将其写入默认值。
defaults.setObject((deaultScoreResults as NSDictionary), forKey: "userScoreForCase");
为了进一步阐述我的观点,如果你看一下用于设置NSUserDefault值的apple文档,你会发现value
必须是一个正确的列表对象:“value参数只能是属性列表对象:NSData, NSString,NSNumber,NSDate,NSArray或NSDictionary“(source)。所以执行演员会解决这个问题。