存储大量布尔变量的最佳方法?

时间:2009-02-26 13:14:46

标签: ios objective-c xcode cocoa-touch

我正在编写一个代码,要求我存储60 * 4个布尔值,这些值的标题存储在plist中。我需要在运行时操作布尔值,并且找不到一种方法来轻松更新plist文件。而且使用sqlite数据库来存储布尔值变得忙于这么大量的数据...有没有任何简单的方法我可以在运行时和应用程序启动后轻松存储和检索这些值吗?

3 个答案:

答案 0 :(得分:7)

我不是故意成为异教徒,但对于这样的案件有一个简单的规则:过早优化是万恶之源。

60 * 4只有240布尔。即使你以某种方式设法以最糟糕的方式存储它们并且每布尔值为1k,那仍然只有240k。只要那个存储而不是RAM,谁在乎呢?为什么不从最简单的方式开始,并在以后遇到某些事情时修复它? SQLite对此非常好。

如果您已接近发货且已将此确定为问题,请务必忽略此答案。 :)

答案 1 :(得分:2)

虽然如上所述使用NSArray或NSMutableArray要容易得多, 你可以看看使用标准的C ++矢量类。 AFAIK这是非常节省空间的。记忆的分配。

答案 2 :(得分:1)

你可以使用存储布尔数组的NSData方法,但你也可以让cocoa自然地做到这一点:

NSArray* arrayOfBools; // array of 240 NSNumbers, each made with [NSNumber numberWithBool:NO];

然后

[[NSUserDefaults standardUserDefaults] setObject:arrayOfBools forKey:@"MyNameForThe240"];

检索它们:

NSArray* savedBools = [[[NSUserDefaults standardUserDefaults] objectForKey:"MyNameForThe240"];

您可能希望将它们放在可变数组中:

NSMutableArray* the240ThatCanBeEdited = [NSMutableArray arrayWithArray:savedBools];

然后退出时,用

保存它们
[[NSUserDefaults standardUserDefaults] setObject:the240ThatCanBeEdited forKey:@"MyNameForThe240"];