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?
Wie in den Kommentaren erwähnt, stimmt UIImage
mit NSCoding
überein, so dass Sie es direkt codieren können, wie folgt:
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.
Verwenden Sie UIImagePNGRepresentation
oder UIImageJPEGRepresentation
, um UIImage
in ein NSData
zu konvertieren, und codieren Sie dann NSData
:
Um das Bild später zu dekodieren:
%Vor%Tags und Links objective-c ios uiimage decode encode