Beste manier om een ​​groot scala aan boolean variabelen op te slaan?

stemmen
4

Ik ben bezig met een code die mij nodig heeft om 60 * 4 boolean waarden op te slaan, worden de titels voor deze waarden wordt opgeslagen in een plist. Ik nodig hebben om de boolean waarden bij runtime te manipuleren en kon niet een manier om de plist-bestand easily..also met behulp van SQLite database voor het opslaan van de boolean waarden wordt hectisch voor een dergelijke grote hoeveelheid data bij te werken ... Is er een eenvoudige manier door die ik kan opslaan en ophalen van deze waarden gemakkelijk zowel op runtime en na de toepassing wordt gestart?

De vraag is gesteld op 26/02/2009 om 14:14
bron van user
In andere talen...                            


3 antwoorden

stemmen
7

Ik bedoel niet een ketter zijn, maar er is een simpele regel voor dit soort gevallen: vroegtijdige optimalisatie is de wortel van alle kwaad.

60 * 4 is slechts 240 booleans. Zelfs als je een of andere manier lukt om ze op te slaan in de slechtst mogelijke manier en neem 1k per boolean, dat is nog maar 240k. Zolang dat is opslag in plaats van RAM, who cares? Waarom niet beginnen met de eenvoudigste mogelijke manier en op te lossen als er iets later aan u komt? SQLite zou prima voor dit.

Als je dicht bij het verschepen bent en hebben dit geïdentificeerd als een probleem, met alle middelen te negeren dit antwoord. :)

antwoordde op 26/02/2009 om 20:06
bron van user

stemmen
2

Terwijl zijn van plan om veel gemakkelijker te NSArray of NSMutableArray gebruiken zoals hierboven vermeld, kunt u kijken naar het gebruik van de standaard C ++ vector klasse. Voor zover ik weet is dit zeer ruimte-efficiënt tov. de toewijzing van het geheugen.

antwoordde op 05/11/2010 om 15:47
bron van user

stemmen
1

Je kon de NSData methode voor het opslaan van de boolean array, maar je kunt ook gewoon laten cacao doen natuurlijk:

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

dan

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

Ophalen hen:

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

U zult waarschijnlijk willen ze in een veranderlijke array:

NSMutableArray* the240ThatCanBeEdited = [NSMutableArray arrayWithArray:savedBools];

Dan op stoppen, sla ze met de

[[NSUserDefaults standardUserDefaults] setObject:the240ThatCanBeEdited forKey:@"MyNameForThe240"];
antwoordde op 26/02/2009 om 22:36
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more