如何在应用程序启动之间存储整数数组?

时间:2013-08-21 13:55:02

标签: iphone ios objective-c c

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

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

修改 是否更快使用c-arrays,将它们存储在txt文件中并制作自己的解析器?

3 个答案:

答案 0 :(得分:3)

Plists和NSCoding也用于简单整数。

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

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

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

答案 1 :(得分: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标准(并且我的意思是使用你自己制作的东西可能 bug,和/或引入奇怪的行为,其中Objective-C提供它自己的方式来做它)。请参阅this answer to know more about too much optimization

答案 2 :(得分: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
    
相关问题