Já jsem pracoval na kód, který mě potřebuje k uložení 60 * 4 logické hodnoty, názvy pro tyto hodnoty jsou uloženy v plist. Žádám, aby manipulaci s logické hodnoty za běhu a nemohl najít způsob, jak aktualizovat soubor PLIST easily..also používáte SQLite databáze pro ukládání logické hodnoty se stává hektický pro takové velké množství dat ... Existuje nějaký jednoduchý způsob, jak prostřednictvím které mohu ukládat a načítat tyto hodnoty snadno jak za běhu a po spuštění aplikace?
Nejlepší způsob, jak uložit velké pole boolean proměnných?
Nechci být kacíř, ale je tu jednoduché pravidlo pro případy, jako je tento: předčasné optimalizace je kořenem všeho zla.
60 * 4 je jen 240 Booleans. I když jste nějak podaří ukládat v nejhorším možným způsobem a mít 1k za logickou hodnotu, která je stále jen 240K. Tak dlouho, jak to je skladování, spíše než RAM, koho to zajímá? Proč nezačít s nejjednodušším možným způsobem a opravit to, když něco přijde k vám později? SQLite by bylo naprosto v pořádku za to.
Pokud se budete blížit k expedici a označily jako problém, a to všemi prostředky ignorovat tuto odpověď. :)
I když jeho bude mnohem snazší použít NSArray nebo NSMutableArray jak je uvedeno výše, můžete se podívat na použití standardního C ++ třídu Vector. Pokud vím je to velmi prostorově nenáročný wrt. alokace paměti.
Dalo by se použít metodu NSData ukládání boolean pole, ale můžete také nechat kakao to přirozeně:
NSArray* arrayOfBools; // array of 240 NSNumbers, each made with [NSNumber numberWithBool:NO];
pak
[[NSUserDefaults standardUserDefaults] setObject:arrayOfBools forKey:@"MyNameForThe240"];
Načíst je:
NSArray* savedBools = [[[NSUserDefaults standardUserDefaults] objectForKey:"MyNameForThe240"];
Ty budou pravděpodobně chtít, v měnitelného pole:
NSMutableArray* the240ThatCanBeEdited = [NSMutableArray arrayWithArray:savedBools];
Pak se na skončit, uložit je ven s
[[NSUserDefaults standardUserDefaults] setObject:the240ThatCanBeEdited forKey:@"MyNameForThe240"];













