NSKeyedArchiver / NSuserDefaults - Speichern eines CGRect

8

In meiner App kann ein Benutzer bestimmte Elemente wie z. B. Lautstärkeregler und Ansichten von UIImage ziehen. Mein Ziel ist es, in der Lage zu sein, die Positionen der Elemente zu speichern, damit der Benutzer die Elemente nach dem Neustart nicht erneut ziehen muss. Leider habe ich Fehler bei der Verwendung der Route ' CGRect rect = item.frame to NSuserDefaults oder NSKeyedArchiver ' gesehen. Irgendwelche anderen Vorschläge?

    
Flafla2 16.02.2010, 03:35
quelle

4 Antworten

11

Wenn Sie die verschlüsselte Archivierung auf dem iPhone verwenden, unterstützt UIKit speziell einen Zusatz, der wie folgt aussieht: -encodeCGRect:forKey: und tut genau das, was Sie wollen. Weitere Informationen finden Sie in den Apple-Dokumenten für NSCoders UIKit Ergänzungen .

Wenn Sie NSUserDefaults verwenden, erhalten Sie nicht den Luxus, einen expliziten Encoder für CGRects zu verwenden, aber wie einige andere Antworten sagen, könnten Sie sie als Strings mit NSStringFromCGRect() und umgekehrt speichern.

    
Ben Zotto 16.02.2010, 03:45
quelle
16

Sie können NSStringFromgCGRect () und CGRectFromString () verwenden, um sie zu speichern.

    
Ben Gottlieb 16.02.2010 03:44
quelle
0

Sie würden wahrscheinlich CGRect mit NSData codieren und dann NSData object mit NSUserDefaults oder NSKeyedArchiver speichern.

Ich bin nicht sicher, welche Fehler genau Sie in Ihrer Frage beziehen, vielleicht mehr Erklärung benötigt?

    
stefanB 16.02.2010 03:41
quelle
-4

Sie müssen die Floats im CGRect in NSNumbers konvertieren und sie dann in ein Dictionary einfügen.

Wenn Sie viele CGRects speichern müssen, empfehle ich, eine kleine Klasse mit den CGRect-Elementen als archivierbare NSNumber-Attribute zu erstellen. Erstellen Sie einen Initialisierer, der ein CGRect übernimmt. Schreiben Sie dann schnelle NSCoder-Protokollmethoden, damit das gesamte Objekt archiviert werden kann.

Auf diese Weise können Sie die CGRects schnell und einfach konvertieren, speichern und dann abrufen.

    
TechZen 16.02.2010 03:41
quelle

Tags und Links