我想通过 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 值的 Apple 文档,您将看到 value
必须是正确的列表对象:“值参数只能是属性列表对象:NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary”(source)。因此执行强制转换可以解决这个问题。
关于arrays - 将附加数组保存到 NSUserdefaults 不返回附加数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29542123/