将附加的数组保存到NSUserdefaults而不返回附加的数组

时间:2015-04-09 15:02:18

标签: arrays swift nsuserdefaults

我想通过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{....

也许用户默认值不是最适合将附加数据保存到现有数据的方法,还是核心数据在这里会得到更多认可?

赞赏任何输入

1 个答案:

答案 0 :(得分:1)

有一段时间我有类似的问题,不确定它是否是故意的。尝试将字典强制转换为NSDictionary,然后再将其写入默认值。

defaults.setObject((deaultScoreResults as NSDictionary), forKey: "userScoreForCase");

为了进一步阐述我的观点,如果你看一下用于设置NSUserDefault值的apple文档,你会发现value必须是一个正确的列表对象:“value参数只能是属性列表对象:NSData, NSString,NSNumber,NSDate,NSArray或NSDictionary“(source)。所以执行演员会解决这个问题。