Kann ein Integer-Array mit NSUserDefaults auf dem iPhone gespeichert werden?

8

Ist es möglich, ein Integer-Array mit NSUserDefaults auf dem iPhone zu speichern? Ich habe ein Array in meiner .h-Datei deklariert als: int playfield[9][11] , das mit Ganzzahlen aus einer Datei gefüllt wird und das Layout eines Spielfeldes bestimmt. Ich möchte in der Lage sein, mehrere Speicherplätze zu haben, in denen Benutzer ihre Spiele speichern können. Wenn ich das tue:

%Vor%

Ich bekomme einen Zeigerfehler. Wenn es möglich ist, ein Integer-Array zu speichern, was ist der beste Weg dies zu tun und es später wieder aufzurufen?

Vielen Dank im Voraus!

    
user21293 08.12.2008, 20:51
quelle

4 Antworten

13

Sie können das Array mit einem NSData-Wrapper speichern und abrufen

dh (ohne Fehlerbehandlung)

Speichern

%Vor%

Laden

%Vor%     
epatel 08.12.2008, 21:19
quelle
7

Aus Apples NSUserDefaults-Dokumentation :

  

Der Standardwert muss eine Eigenschaftsliste sein, dh eine Instanz von (oder für Sammlungen eine Kombination von Instanzen von): NSData, NSString, NSNumber, NSDate, NSArray oder NSDictionary.

Aus diesem Grund erhalten Sie den Zeigerfehler.

Sie haben mehrere Optionen (in der Reihenfolge der empfohlenen Verwendung):

  1. Verwenden Sie NSArray von NSArray s, um playField in Ihrer Anwendung zu speichern
  2. Behalte playField als Array von int , fülle aber ein NSArray mit Zahlen, bevor du es in NSUserDefaults speicherst.
  3. Schreiben Sie Ihre eigene Unterklasse von NSArchiver , um zwischen einem Array von ganzen Zahlen und NSData zu konvertieren.
e.James 08.12.2008 21:20
quelle
4

Sie müssen dies in ein Objekt umwandeln. Sie können NSArray oder NSDictionary verwenden.

    
August 08.12.2008 21:10
quelle
1

Verwenden Sie einfach NSArray anstelle von normalen C-Array, dann wird es Ihr Problem leicht lösen.

    
leonho 09.12.2008 07:51
quelle

Tags und Links