¿La mejor manera de almacenar una gran variedad de variables booleanas?

Estoy trabajando en un código que requiere que almacene valores booleans de 60 * 4, los títulos de estos valores se almacenan en un plist. Necesito manipular los valores booleans en time de ejecución y no pude encontrar una manera de actualizar el file Plist fácilmente … también usando la database sqlite para almacenar los valores booleans se vuelve agitado para una cantidad tan grande de datos … ¿Hay alguna manera simple a través que puedo almacenar y recuperar estos valores fácilmente tanto en time de ejecución como después de que se inicie la aplicación?

No pretendo ser hereje, pero hay una regla simple para casos como este: la optimization prematura es la raíz de todo mal.

60 * 4 es solo 240 booleans. Incluso si de alguna manera logras almacenarlos de la peor manera posible y tomas 1k por boolean, eso sigue siendo solo 240k. Mientras eso sea almacenamiento en lugar de memory RAM, ¿a quién le importa? ¿Por qué no comenzar con la forma más simple posible y solucionarlo cuando algo te llegue más tarde? SQLite estaría perfectamente bien para esto.

Si está cerca del envío y lo ha identificado como un problema, ignore esta respuesta. 🙂

Si bien será mucho más fácil usar NSArray o NSMutableArray como se mencionó anteriormente, podría ver el uso de la class de vector C ++ estándar. AFAIK esto es muy eficiente en el espacio wrt. La asignación de la memory.

Podría usar el método NSData para almacenar la matriz booleana, pero también podría dejar que el cocoa lo haga de forma natural:

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

entonces

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

Recupérelos:

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

Es probable que los desees en una matriz mutable:

 NSMutableArray* the240ThatCanBeEdited = [NSMutableArray arrayWithArray:savedBools]; 

Luego de dejar de fumar, guárdelos con el

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