Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios6 NSDictionary和NSUserDefault是否作为数据存储?_Ios6_Nsarray_Nsdictionary_Nsuserdefaults_Data Storage - Fatal编程技术网

Ios6 NSDictionary和NSUserDefault是否作为数据存储?

Ios6 NSDictionary和NSUserDefault是否作为数据存储?,ios6,nsarray,nsdictionary,nsuserdefaults,data-storage,Ios6,Nsarray,Nsdictionary,Nsuserdefaults,Data Storage,应用程序概述: 用户可以执行互联网速度测试和其他类型的测试,结果各不相同。通常,测试结果存储在NSArray和NSString中 目标: 我正在尝试创建一个历史记录系统,允许用户返回并查看过去的结果 问题: 我很难弄清楚该使用哪种存储介质,以及它们应该如何组合在一起 是否有办法使用字符串或整数值命名NSUserDefaults?例如,我有一个名为“hisName”的字符串,其值为“history1”,是否可以命名NSUserDefaults*hisName,但将其还原为值history1?每次测

应用程序概述:

用户可以执行互联网速度测试和其他类型的测试,结果各不相同。通常,测试结果存储在NSArray和NSString中

目标:

我正在尝试创建一个历史记录系统,允许用户返回并查看过去的结果

问题:

我很难弄清楚该使用哪种存储介质,以及它们应该如何组合在一起

是否有办法使用字符串或整数值命名NSUserDefaults?例如,我有一个名为“hisName”的字符串,其值为“history1”,是否可以命名NSUserDefaults*hisName,但将其还原为值history1?每次测试的想法是数字递增,并创建一个新的历史默认值(history2、History3等)

在这个应用程序的Android版本中,这是可能的。因此,该应用程序只需根据允许的最大历史数动态创建“History-X”。当达到最大值时,第一个将被覆盖

更新:

我会更努力地解释我的意思

用户完成测试,我将所有必需的数据存储在名为History1的NSUserDefaults/NSDictionary文件中


然后,我将名为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这就是我想确定的。我将研究你的建议。