3

我想将一些数据存储为整数矩阵。为简单起见,假设我想将此数据存储在整数数组中。每次应用程序启动后,我想使用这个数组填充我的模型。所以问题是如何在沙箱中存储整数数组?我不想写入和重写数据,也许在第一次开始时只有一次。

我尝试了什么:我知道在 plist 中存储和使用NSCoding. 但是这种策略用于更复杂的模型,而不仅仅是整数数组。

编辑: 使用 c 数组,将它们存储在 txt 文件中并制作自己的解析器是否更快?

4

3 回答 3

3

Plists 和 NSCoding 也用于简单整数。

但是,您可以只使用 NSUserDefaults - 这是最简单的方法:

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"AppData"];

以后也可以轻松地从任何地方检索。

于 2013-08-21T13:58:16.437 回答
2

您可以将其存储在 plist 中,正如您所说,这不是一个坏主意,它可以工作并完成工作。它一点也不复杂,真的,而且不仅用于复杂的模型。

否则,您可能想使用 NSUserDefaults :

if (![NSUserDefaults standardUserDefaults] objectForKey:@"AKey"]) {
    [[NSUserDefaults standardUserDefaults] setObject:yourArray forKey:@"AKey"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

不要忘记您需要将整数包装到NSNumber. 一个好的做法是使用 Objective-C 的“新”符号 : NSNumber * nb = @(42)。那更具可读性[NSNumber numberWithInt:42]

祝你好运 !

编辑:根据您的编辑,不,至少现在不要使用您自己的解析器。当你真的不需要它时,不要尝试优化代码。尤其是它涉及“打破”Objective-C 标准(我的意思是使用您自己制作的东西,这些东西可能会出错,和/或在Objective-C 提供自己的方式时引入奇怪的行为)。请参阅此答案以了解有关过多优化的更多信息

于 2013-08-21T14:03:18.670 回答
0
+(void)storeArrayInDeviceWithKey:(NSArray *)arrData withKey:(NSString *)key{

     NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];

     [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:arrData] forKey:key];

     [currentDefaults synchronize];
}
  • 对于 NSArray 你需要很少的对话

    NSKeyedArchiver archivedDataWithRootObject:UR OBJECT
    
于 2013-08-21T14:42:18.357 回答