Ich arbeite an einem Code, der erfordert, dass ich 60 * 4 boolesche Werte speichern, die Titel für diese Werte werden in einem Plist gespeichert. Ich benötige, um die booleschen Werte zur Laufzeit zu manipulieren und konnte keine Möglichkeit finden, die plist-Datei leicht zu aktualisieren. Auch die Verwendung der sqlite-Datenbank zum Speichern der booleschen Werte wird für solch eine große Datenmenge hektisch ... Gibt es einen einfachen Weg durch Welche kann ich einfach speichern und abrufen, sowohl zur Laufzeit als auch nach dem Start der Anwendung?Beste Möglichkeit, um eine große Reihe von booleschen Variablen zu speichern?
Antwort
Ich will nicht ein Ketzer sein, aber es gibt eine einfache Regel für Fälle wie diese: vorzeitige Optimierung ist die Wurzel allen Übels.
60 * 4 ist nur 240 booleans. Selbst wenn Sie es irgendwie schaffen, sie auf die schlechteste Art und Weise zu speichern und 1k pro Booleschen Wert zu nehmen, sind das immer noch nur 240k. Solange das Speicher und nicht RAM ist, wen interessiert das? Warum nicht mit dem einfachsten Weg anfangen und es reparieren, wenn etwas später zu dir kommt? SQLite wäre dafür völlig in Ordnung.
Wenn Sie kurz vor dem Versand stehen und dies als Problem erkannt haben, ignorieren Sie diese Antwort auf jeden Fall. :)
Ich muss zustimmen. Sich über 240 Booleans Gedanken zu machen, ist nicht dasselbe wie Sorgen um 240000 Booleans. Sie versuchen, sie zu packen, und der Code zum Entpacken/Entpacken verbraucht mehr Speicherplatz als die Booleschen selbst. – Nosredna
Eigentlich für convience hatten wir es 4 mal, aber es kann auch 100 gehen ... so wird es 60 * 100 also ich suchte nach einem anderen Weg – Snehal
Nun, Speichern von 100 Sätze von 60 booleans (6000 insgesamt) in einem sqlite3-Datenbank mit einem Index und keine Optimierung dauert 150k. Wenn die Sätze immer die gleiche Größe haben, könnten Sie sie als Strings von 60 Bytes (+ Länge) in einzelnen Datensätzen speichern, aber ich denke, sie einzeln zu speichern, ist der bessere Weg zu gehen. –
Sie können die NSData Verfahren zum Speichern des boolean-Array verwenden, aber man könnte auch lassen nur Kakao tut es natürlich:
NSArray* arrayOfBools; // array of 240 NSNumbers, each made with [NSNumber numberWithBool:NO];
dann
[[NSUserDefaults standardUserDefaults] setObject:arrayOfBools forKey:@"MyNameForThe240"];
sie abrufen:
NSArray* savedBools = [[[NSUserDefaults standardUserDefaults] objectForKey:"MyNameForThe240"];
Sie werden sie wahrscheinlich in einem veränderbaren Array haben:
NSMutableArray* the240ThatCanBeEdited = [NSMutableArray arrayWithArray:savedBools];
Dann verlassen auf, speichern sie aus mit dem
[[NSUserDefaults standardUserDefaults] setObject:the240ThatCanBeEdited forKey:@"MyNameForThe240"];
danke ... epatel hat auch gleich vorgeschlagen und ... das scheint eine vernünftige Lösung zu sein ... – Snehal
Während seine viel einfacher sein würde NSArray oder NSMutableArray zu verwenden, wie oben erwähnt, Sie bei Verwendung der Standard-C++ Vektor-Klasse aussehen könnte. AFAIK das ist sehr platzsparend. die Zuweisung von Speicher.
- 1. Einfachste Möglichkeit, eine große Anzahl von Variablen zu initialisieren
- 2. Beste Möglichkeit, Bankkontodaten von Benutzern zu speichern?
- 3. Beste Möglichkeit, Variablen zwischen Postbacks asp.net zu speichern?
- 4. Beste Art, große Datenmengen zu speichern
- 5. Beste Möglichkeit, Sortierreihenfolge/Priorität zu speichern?
- 6. Beste Möglichkeit, eine Liste/Array von verschiedenen Unterklassen zu speichern
- 7. Sammlung optimieren, um eine große Anzahl von Objekten zu speichern
- 8. Beste Möglichkeit, große Liste von Wörterbüchern in Python zu behandeln
- 9. Der beste Ansatz, um große Daten von MongoDB zu bekommen
- 10. Beste Möglichkeit, SparseBooleanArray in Bundle zu speichern?
- 11. WinJS: Beste Möglichkeit, wichtige Informationen zu speichern
- 12. Beste Möglichkeit, Nachrichtenartikel in Android zu speichern?
- 13. Was ist die beste Möglichkeit, um eine Reihe von Bildern von einem Webserver in Android anzuzeigen?
- 14. Beste Möglichkeit zum Speichern von Protokollen/Statistiken
- 15. Redis - der beste Weg, um eine große Karte (Wörterbuch) zu speichern
- 16. Wie eine Reihe von Booleschen Logik in PHP analysieren
- 17. Der beste Weg, um große Gruppen von Webseiten zu transformieren?
- 18. beste Möglichkeit, große Anfrage in WCF zu behandeln
- 19. Beste Möglichkeit, eine große Anzahl von Dateien in iOS zu verwalten
- 20. Beste Möglichkeit, Daten in Python für die Analyse zu speichern
- 21. Beste Art, um Umsatzsteuerinformationen zu speichern
- 22. beste Möglichkeit, Code für die spätere Ausführung zu speichern (Python)
- 23. Die beste Methode zum Speichern globaler Variablen
- 24. Swift: Gibt es eine Möglichkeit, eine Signatur in einer Reihe von Punkten zu speichern?
- 25. Was ist der beste Weg, um große geordnete Listen oder Hashes zu manipulieren und zu speichern?
- 26. beste Weg, um Ergebnisse zu speichern
- 27. Der beste Weg, um große Datenmengen in DataGrid zu laden
- 28. Der beste Weg, um eine Dateigröße in Bytes zu speichern?
- 29. Was ist der beste Weg, um eine Reihe von (~ 200) farbigen Rechtecken in Cocoa zu zeichnen?
- 30. Schnellste Möglichkeit, eine Reihe von Datensätzen in Queryset in Django zu aktualisieren
Werfen Sie einen Blick auf diese SO-Frage [Kann ein Integer-Array mit NSUserDefaults auf dem iPhone gespeichert werden?] (Http://stackoverflow.com/questions/350848/possible-to-save-an-integer-array-using-) nsuserdefaults-on-iphone) – epatel