Я работаю на коде, который требует от меня для хранения 60 * 4 булевых значений, названия для этих значений хранятся в PLIST. Я требую, чтобы манипулировать логические значения во время выполнения и не могу найти способ, чтобы обновить файл Plist easily..also используя SQLite базы данных для хранения логических значений становится беспокойным для такого большого количества данных ... Есть ли простой путь через которые можно хранить и извлекать эти значения легко как во время выполнения и после запуска приложения?
Лучший способ для хранения большого массива логических переменных?
Я не имею в виду, чтобы быть еретиком, но есть простое правило для подобных случаев: преждевременная оптимизация есть корень всех зол.
60 * 4 составляет всего 240 булевы. Даже если вы каким-то образом удается сохранять их в самый неподходящий путь и принять 1k за логическое значение, что до сих пор только 240k. Пока это хранилище, а не RAM, кто заботится? Почему бы не начать с самым простым способом и исправить ее, когда что-то приходит к вам позже? SQLite будет прекрасно для этого.
Если вы близки к перевозке груза и определили это как проблему, всеми средствами игнорировать этот ответ. :)
Несмотря на то, что его будет гораздо проще в использовании NSArray или NSMutableArray, как упоминалось выше, вы можете посмотреть на использование стандартного C ++ вектор класса. AFAIK это очень эффективным, но WRT. выделение памяти.
Вы можете использовать метод NSData хранения булева массив, но вы также можете просто позволить какао сделать это естественно:
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"];













