【发布时间】:2010-10-10 01:58:12
【问题描述】:
我正在编写需要存储 60*4 布尔值的代码,这些值的标题存储在 plist 中。我需要在运行时操作布尔值并且找不到轻松更新 plist 文件的方法..也使用 sqlite 数据库存储布尔值对于如此大量的数据变得忙碌...有没有简单的方法通过我可以在运行时和应用程序启动后轻松存储和检索这些值?
【问题讨论】:
标签: ios objective-c xcode cocoa-touch
我正在编写需要存储 60*4 布尔值的代码,这些值的标题存储在 plist 中。我需要在运行时操作布尔值并且找不到轻松更新 plist 文件的方法..也使用 sqlite 数据库存储布尔值对于如此大量的数据变得忙碌...有没有简单的方法通过我可以在运行时和应用程序启动后轻松存储和检索这些值?
【问题讨论】:
标签: ios objective-c xcode cocoa-touch
你可以使用 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"];
【讨论】:
虽然如上所述使用 NSArray 或 NSMutableArray 会容易得多, 你可以看看使用标准的 C++ 向量类。 AFAIK 这是非常节省空间的 wrt。内存的分配。
【讨论】:
我并不是要成为异端,但对于这种情况有一个简单的规则:过早优化是万恶之源。
60*4 只是 240 个布尔值。即使您设法以最糟糕的方式存储它们并且每个布尔值取 1k,那仍然只有 240k。只要那是存储而不是 RAM,谁在乎呢?为什么不从最简单的方法开始并在以后遇到问题时解决它? SQLite 非常适合这个。
如果您即将发货并已将此问题确定为问题,请务必忽略此答案。 :)
【讨论】: