J'ai développé une application pour iPhone ces derniers mois. Récemment, j'ai voulu améliorer les performances et mettre en cache quelques-unes des images utilisées dans l'interface utilisateur. Les images sont téléchargées aléatoirement sur le Web par l'utilisateur, donc je ne peux pas ajouter d'images spécifiques au projet. J'utilise également déjà NSUserDefaults pour enregistrer d'autres informations dans l'application.iPhone - Valeurs par défaut et UIImages
Alors maintenant, je tente de sauver un dictionnaire de UIImages à mes NSUserDefaults objet et obtenir ...
- [UIImage encodeWithCoder:]: sélecteur non reconnu envoyé à l'instance
Je décide alors de sous-classe UIImage avec une classe nommée UISaveableImage et implémente NSCoding. Donc maintenant je suis à ...
@implementation UISaveableImage
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:super forKey:@"image"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
if (self=[super init]){
super = [decoder decodeObjectForKey:@"image"];
}
return self;
}
@end
ce qui n'est pas mieux que là où j'ai commencé. Si j'étais capable de convertir un UIImage en NSData, je serais bien, mais tout ce que je peux trouver sont des fonctions comme UIImagePNGRepresentation qui nécessitent que je sache quel type d'image c'était. Quelque chose que UIImage ne me permet pas de faire. Pensées? J'ai l'impression d'avoir erré dans le mauvais sens ...
La réponse de Ben est correcte, mais votre hypothèse selon laquelle vous devez connaître le type de fichier est incorrecte. UIImagePNGRepresentation renvoie le NSData en tant que fichier PNG, quel que soit le format dans lequel il se trouvait lorsqu'il a été chargé. –