Pracuję nad kodem, który wymaga mnie do przechowywania 60 * 4 wartości logicznych, tytuły dla tych wartości są przechowywane w plist. Potrzebuję manipulować logicznych wartości w czasie rzeczywistym i nie mógł znaleźć sposób, aby zaktualizować plik plist easily..also użyciu bazy danych sqlite do przechowywania wartości logicznych staje się gorączkowy dla takiej dużej ilości danych ... Czy jest jakiś prosty sposób poprzez które można przechowywać i pobierać te wartości z łatwością zarówno w czasie wykonywania i po uruchomieniu aplikacji?
Najlepszym sposobem, aby przechowywać dużą tablicę zmiennych logicznych?
Nie chcę być heretykiem, ale istnieje prosta reguła takich przypadkach: przedwczesna optymalizacja jest źródłem wszelkiego zła.
60 * 4 jest tylko 240 wartości logiczne. Nawet jeśli jakoś uda się je przechowywać w sposób najgorszy z możliwych i wziąć 1k za logiczną, to nadal tylko 240k. Dopóki to przechowywanie zamiast RAM, kogo to obchodzi? Dlaczego nie zacząć najprostszy możliwy sposób i go naprawić, gdy coś przychodzi do ciebie później? SQLite byłoby perfekcyjnie do tego.
Jeśli jesteś blisko do żeglugi i zidentyfikowali w tym problemu, za wszelką cenę zignorować tę odpowiedź. :)
O ile jej będzie znacznie łatwiejszy w użyciu NSArray lub NSMutableArray jak wspomniano powyżej, można spojrzeć na użyciu standardowego klasa C ++ wektorowych. AFAIK jest to bardzo efektywny przestrzeń wrt. alokacja pamięci.
Można użyć metody NSData przechowywania tablicę logiczną, ale można też po prostu pozwolić kakao zrobić to naturalnie:
NSArray* arrayOfBools; // array of 240 NSNumbers, each made with [NSNumber numberWithBool:NO];
następnie
[[NSUserDefaults standardUserDefaults] setObject:arrayOfBools forKey:@"MyNameForThe240"];
Odzyskaj je:
NSArray* savedBools = [[[NSUserDefaults standardUserDefaults] objectForKey:"MyNameForThe240"];
prawdopodobnie będziesz chciał je w zmienny tablicy:
NSMutableArray* the240ThatCanBeEdited = [NSMutableArray arrayWithArray:savedBools];
Następnie zamknąć, zapisać je z
[[NSUserDefaults standardUserDefaults] setObject:the240ThatCanBeEdited forKey:@"MyNameForThe240"];













