Ich bin verwirrt über NSUserDefaults
auf dem iPhone.Gibt es eine bessere Möglichkeit, eine Menge Sachen in NSUserDefaults zu setzen?
Ich komme aus einem C/asm-Hintergrund und das Objective-C-Zeug war eine Lernerfahrung.
Ich verwende derzeit NSUserDefaults
, um einige Zeichenfolgen (für die Namen in einer Highscore-Tabelle) zu speichern. Ich möchte damit beginnen, eine Funktion vom Typ "Spiel speichern" zu implementieren. Wenn der Benutzer also einen Anruf erhält oder für einen Moment aus dem Spiel aussteigt, kann er wieder darauf zugreifen.
Um das Spiel wiederherzustellen, habe ich ein paar BOOL
Flags, ein paar int
s, um einige notwendige Variablen zu speichern, aber ich bin bei einem Array stecken ich muss speichern.
Ich habe ein 50-Element-Array von unsigned char
s. Ich könnte es zu int
s verschieben, wenn es die Dinge einfacher machen würde, aber ich sehe es einfach nicht.
Um mit NSUserDefaults
arbeiten kann ich setBool
(bereits das zu tun), setFloat
(auch hier schon das zu tun), setInteger
und setObject
.
Offensichtlich konnte ich Schlüssel für jedes Element des Arrays und speichern sie eins nach dem anderen mit setInteger
, aber das ist wirklich kludgy. Was ist der beste Weg, um dies anzugehen? Statt eines Arrays von unsigned char
s versuche ich irgendwie, einen NSObject
zu verwenden? Gibt es irgendwelche guten Tutorials auf NSObject
s, die ich durchlesen kann, um es besser zu verstehen?
Ja, normalerweise würden Sie NSUserDefaults für Voreinstellungen verwenden (z. B. imperiale vs metrische Einheiten wählen) und die Daten Ihrer App in einer separaten Datei mit serialisierten Eigenschaftenlisten, sqlite, Core Data usw. speichern. –
Einverstanden, Benutzervorgaben sind Prefs, aber Daten sollten woanders gespeichert werden, wie zum Beispiel in "~/Library/Application Support/MyApp /". –
Auf dem iPhone gibt es offensichtlich verschiedene Konventionen zum Speichern von Daten, da die Struktur sehr unterschiedlich ist. Weitere Informationen zum Speichern von Dateien für Ihre App finden Sie in den entsprechenden iPhone-Programmierhandbüchern. –