将附加的数组保存到NSUser默认值而不返回附加的数组



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

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

任何赞赏的输入

我之前也遇到过类似的问题,不确定这是否是故意的。在将字典写入默认值之前,请尝试将其强制转换为NSDictionary。

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

为了进一步阐述我的观点,如果你查看设置NSUserDefault值的苹果文档,你会发现value必须是一个正确的列表对象:"value参数只能是属性列表对象:NSData、NSString、NSNumber、NSDate、NSArray或NSDictionary"(来源)。所以表演演员阵容可以解决这个问题。

最新更新