Лучший способ хранить большой массив логических переменных? - PullRequest
4 голосов
/ 26 февраля 2009

Я работаю над кодом, который требует от меня сохранения логических значений 60 * 4, названия этих значений хранятся в plist. Мне требуется манипулировать булевыми значениями во время выполнения, и я не могу найти способ легко обновить файл plist. Также использование базы данных sqlite для хранения булевых значений становится беспокойным для такого большого объема данных ... Есть ли простой способ какие я могу легко хранить и извлекать эти значения как во время выполнения, так и после запуска приложения?

Ответы [ 3 ]

7 голосов
/ 26 февраля 2009

Я не хочу быть еретиком, но для таких случаев есть простое правило: преждевременная оптимизация - корень всего зла.

60 * 4 - это только 240 логических значений. Даже если вам как-то удастся сохранить их в худшем виде и взять 1 КБ за логическое значение, это все равно всего 240 КБ. Пока это память, а не оперативная память, кого это волнует? Почему бы не начать с самого простого способа и исправить это, когда что-то придет к вам позже? SQLite отлично подойдет для этого.

Если вы близки к отправке и определили это как проблему, непременно проигнорируйте этот ответ. :)

2 голосов
/ 05 ноября 2010

Хотя будет гораздо проще использовать NSArray или NSMutableArray, как упоминалось выше, Вы можете посмотреть на использование стандартного векторного класса C ++. AFAIK это очень экономно с точки зрения пространства. распределение памяти.

1 голос
/ 27 февраля 2009

Вы можете использовать метод 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"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...