Est-il possible d'enregistrer des images dans NSUserDefaults
en tant qu'objet, puis de les récupérer pour une utilisation ultérieure ?
Réponses
Trop de publicités?Pour enregistrer une image dans NSUserDefaults :
[[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation(image) forKey:key];
Pour récupérer une image à partir de NSUserDefaults :
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:key];
UIImage* image = [UIImage imageWithData:imageData];
Pour Swift 4
J'ai presque tout essayé dans cette question mais personne n'est travaillé pour moi. et j'ai trouvé ma solution. J'ai d'abord créé une extension pour UserDefaults comme ci-dessous, puis j'ai juste appelé les méthodes get et set.
extension UserDefaults {
func imageForKey(key: String) -> UIImage? {
var image: UIImage?
if let imageData = data(forKey: key) {
image = NSKeyedUnarchiver.unarchiveObject(with: imageData) as? UIImage
}
return image
}
func setImage(image: UIImage?, forKey key: String) {
var imageData: NSData?
if let image = image {
imageData = NSKeyedArchiver.archivedData(withRootObject: image) as NSData?
}
set(imageData, forKey: key)
}
}
pour définir l'image comme arrière-plan dans settingsVC, j'ai utilisé le code ci-dessous.
let croppedImage = cropImage(selectedImage, toRect: rect, viewWidth: self.view.bounds.size.width, viewHeight: self.view.bounds.size.width)
imageDefaults.setImage(image: croppedImage, forKey: "imageDefaults")
dans mainVC :
let bgImage = imageDefaults.imageForKey(key: "imageDefaults")!
Pour véloce 2.2
Ranger:
NSUserDefaults.standardUserDefaults().setObject(UIImagePNGRepresentation(chosenImage), forKey: kKeyImage)
À récupérer:
if let imageData = NSUserDefaults.standardUserDefaults().objectForKey(kKeyImage),
let image = UIImage(data: imageData as! NSData){
// use your image here...
}