Wie kodiere ich ein UIImage in einem 'NSCoder'

7

Ich habe ein 'Benutzer' Objekt, das eine Eigenschaft der Klasse 'UIImage' enthält.

Wie kodiere ich das Bild zusammen mit den anderen Eigenschaften und speichere es in NSUserDefaults ?

Mein Verständnis ist, dass ich nur NSString s codieren kann?

Beispielsweise füge ich derzeit in meinem Code das avatar_url (string) in der encode / decode-Implementierung hinzu. Wie kann ich die URL in UIImage konvertieren und dann verschlüsseln?

%Vor%     
Zhen 01.11.2011, 03:40
quelle

1 Antwort

27

AKTUALISIEREN

Wie in den Kommentaren erwähnt, stimmt UIImage mit NSCoding überein, so dass Sie es direkt codieren können, wie folgt:

%Vor%

Dies hat den Vorteil, dass es alle Eigenschaften des Bildes speichern soll (einschließlich scale und imageOrientation ), was sehr wichtig sein kann, wenn sie nicht auf die Standardwerte gesetzt sind.

Es hat jedoch einige Risiken, die Sie beachten sollten. Wenn das Bild direkt aus Ihrem App-Bundle geladen wurde, enthält das Archiv den Bildnamen, aber nicht die Bilddaten. Und wenn das Archiv die Bilddaten enthält, wird es im PNG-Format sein, während Sie das JPEG-Format abhängig von der Art des Bildes bevorzugen, das Sie kodieren.

ORIGINAL

Verwenden Sie UIImagePNGRepresentation oder UIImageJPEGRepresentation , um UIImage in ein NSData zu konvertieren, und codieren Sie dann NSData :

%Vor%

Um das Bild später zu dekodieren:

%Vor%     
rob mayoff 01.11.2011, 03:53
quelle