2010-03-21 17 views
5

¿Cómo podemos almacenar imágenes en un archivo plist. ¿Dónde está almacenado este archivo plist? ¿Alguien puede darme un ejemplo? ¡Las respuestas serán muy apreciadas!Almacenar imagen en plist

Respuesta

8

El UIImage no implementa el protocolo NSCoder directamente lo que es necesario para el almacenamiento en plists.

Pero, es bastante fácil de agregar, como a continuación.

UIImage + NSCoder.h

#import <Foundation/Foundation.h> 

@interface UIImage (MyExtensions) 
- (void)encodeWithCoder:(NSCoder *)encoder; 
- (id)initWithCoder:(NSCoder *)decoder; 
@end 

UIImage + NSCoder.m

#import "UIImage+NSCoder.h" 

@implementation UIImage (MyExtensions) 

- (void)encodeWithCoder:(NSCoder *)encoder 
{ 
    [encoder encodeDataObject:UIImagePNGRepresentation(self)]; 
} 

- (id)initWithCoder:(NSCoder *)decoder 
{ 
    return [self initWithData:[decoder decodeDataObject]]; 
} 

@end 

Cuando esto se ha añadido usted será capaz de almacenar UIImages en plist con decir

// Get a full path to a plist within the Documents folder for the app 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                NSUserDomainMask, 
                YES); 
NSString *path = [NSString stringWithFormat:@"%@/my.plist", 
               [paths objectAtIndex:0]]; 

// Place an image in a dictionary that will be stored as a plist 
[dictionary setObject:image forKey:@"image"]; 

// Write the dictionary to the filesystem as a plist 
[NSKeyedArchiver archiveRootObject:dictionary toFile:path]; 

Nota: No recomiendo hacer esto, a menos que realmente lo desee, es decir, para imágenes realmente pequeñas.

0

Los archivos plist están destinados a almacenar pares clave-valor, no los recursos de su aplicación. Los íconos, imágenes y formularios generalmente se almacenan en un archivo .xib (consulte el Creador de interfaces)

+1

¡Muchas gracias por su sugerencia! – isarathg

1

Depende de dónde y cuándo la aplicación conoce estas imágenes.

Para las imágenes como parte del paquete de aplicaciones, here puede proporcionar alguna información. Si desea almacenar imágenes durante el ejecutando de la aplicación, puede utilizar los mismos conceptos (instrucciones de usuario con rutas relativas a las imágenes).

- Frank

4

Guarde siempre la ruta de la imagen en .plist, nunca la imagen real. Si lo haces, recibirás un golpe de rendimiento. Desea cargar imágenes cuando las necesite, no todas a la vez.