Ios6 NSDictionary和NSUserDefault是否作为数据存储?
应用程序概述: 用户可以执行互联网速度测试和其他类型的测试,结果各不相同。通常,测试结果存储在NSArray和NSString中 目标: 我正在尝试创建一个历史记录系统,允许用户返回并查看过去的结果 问题: 我很难弄清楚该使用哪种存储介质,以及它们应该如何组合在一起 是否有办法使用字符串或整数值命名NSUserDefaults?例如,我有一个名为“hisName”的字符串,其值为“history1”,是否可以命名NSUserDefaults*hisName,但将其还原为值history1?每次测试的想法是数字递增,并创建一个新的历史默认值(history2、History3等) 在这个应用程序的Android版本中,这是可能的。因此,该应用程序只需根据允许的最大历史数动态创建“History-X”。当达到最大值时,第一个将被覆盖 更新: 我会更努力地解释我的意思 用户完成测试,我将所有必需的数据存储在名为History1的NSUserDefaults/NSDictionary文件中Ios6 NSDictionary和NSUserDefault是否作为数据存储?,ios6,nsarray,nsdictionary,nsuserdefaults,data-storage,Ios6,Nsarray,Nsdictionary,Nsuserdefaults,Data Storage,应用程序概述: 用户可以执行互联网速度测试和其他类型的测试,结果各不相同。通常,测试结果存储在NSArray和NSString中 目标: 我正在尝试创建一个历史记录系统,允许用户返回并查看过去的结果 问题: 我很难弄清楚该使用哪种存储介质,以及它们应该如何组合在一起 是否有办法使用字符串或整数值命名NSUserDefaults?例如,我有一个名为“hisName”的字符串,其值为“history1”,是否可以命名NSUserDefaults*hisName,但将其还原为值history1?每次测
然后,我将名为HistoryCount的整数的值增加到2。现在,当用户执行另一个测试时,我想调用NSUserDefaults/NSDictionary“History2”,其中2来自整数HistoryCount。我找不到使用NSString等命名NSUserDefaults/NSDictionary的方法。使用此方法保存字典
-(void)saveDefaults:(int)historyCount{
NSDictionary *history1 = [NSDictionary dictionary]; //You already have this dictionary
NSString *historyKey = [NSString stringWithFormat:@"history%d",historyCount];
[[NSUserDefaults standardUserDefaults] setObject:history1 forKey:historyKey];
}
因此,您的代码可能看起来有点像这样
self.historyCount =1;
[user runTest]; //first run
[user saveDefaults:self.historyCount];
self.historyCount++;
[user runTest];
[user saveDefaults:self.historyCount];
self.historyCount++;
等等
如果您希望同一用户有多个历史字典对象,则可以将历史对象组存储为数组(使用索引访问历史对象),或者可以使用具有键(如@“history1”
和值(即history1
字典)的字典。您可以生成如上所示的新密钥
但是,如果您有多个用户,并且每个用户都有许多历史对象,那么可能很难跟踪。相反,您可以使用核心数据进行对象持久化/管理。您能否详细说明“还原到值历史记录1”不是sqlite或核心数据存储更适合您的目标@丹:你可以存储一个字符串,其中键@“hisName”的值为@“history”。有什么问题?为了增加字符串值,您必须实现自己的逻辑。为了做到这一点,你为什么需要一本字典?@rakesh我更新了一些更清晰的答案details@ahmad这就是我想确定的。我将研究你的建议。