Save typedef enum Objekte in NSUserDefaults

7

Ich habe den folgenden Code geschrieben:

%Vor%

In meiner Ansicht ändere Methode, ich ändere den ViewType. Wenn die App geschlossen wird, möchte ich den letzten ViewType in einem UserDefauls speichern, so dass ich beim ersten Laden den letzten ViewType des Benutzers überprüfen und auf den Standardwert setzen kann.

Ich habe den folgenden Code geschrieben:

%Vor%

Aber XCode zeigt eine Warnung: Inkompatibler Zeiger auf Integer-Konvertierung.

irgendwelche Lösungen? Danke.

    
sumon 29.11.2012, 11:35
quelle

4 Antworten

18

NSUserDefaults gespeicherte Objekte keine C-Datentypen.

Dies wurde nicht versucht, aber Sie könnten möglicherweise nur mit der folgenden Änderung davonkommen:

%Vor%

Die Schreibweise @() ist eine Abkürzung für [NSNumber numberWithInt:viewType] .

    
Stephen Darlington 29.11.2012 11:41
quelle
3

Wie bereits erwähnt hier NSUserDefaults ' setObject:forKey: Methode akzeptiert nur Objekte. Da der Aufzählungstyp kein Objekt ist, können Sie ihn nicht mit dieser Methode festlegen. Da Enums standardmäßig Integer sind, können Sie den Wert mit der Methode setInteger:forKey: speichern.

    
theaob 29.11.2012 11:40
quelle
1

Weil ViewType kein Objekt ist.

Sie können ViewType in ein NSValue zuerst einfügen.

%Vor%     
TheAmateurProgrammer 29.11.2012 11:37
quelle
1

enums sind ganze Zahlen, setObject benötigt ein Objekt !!!

Diese Enumeration in ein Objekt einkapseln (kann ein NSValue oder eine benutzerdefinierte Klasse sein). Dann schreibe es in UserDefaults.

Oder wenn Sie XCode4 verwenden,

%Vor%     
Anoop Vaidya 29.11.2012 11:37
quelle

Tags und Links