Tengo toneladas de objetos que quiero guardar para uso fuera de línea. Actualmente uso las clases que crean NSCoder para los objetos y los datos codificados para que el archivo esté disponible sin conexión.Forma fácil de hacer clase habilitada NSCoder
Así que en el .h que introducen los objetos:
@interface MyClass : NSObject<NSCoding>{
NSNumber* myObject;}
@property(nonatomic,retain) NSNumber* myObject;
Y en .m que hacen que el INIT:
- (id) initWithCoder: (NSCoder *)coder {
if (self = [super init]) {
[self setMyObject: [coder decodeObjectForKey:@"myObject"]];
}
}
- (void) encodeWithCoder: (NSCoder *)coder {
[coder encodeObject: myObject forKey:@"myObject"];
}
Así que la clase es sólo el almacenamiento maniquí con get y set. ¿Hay alguna forma mejor de hacer la decodificación/codificación? ¿Puedo utilizar de algún modo la codificación @dynamic o Key-value para codificar y decodificar? Básicamente quiero que todas las variables de la clase se guarden en el archivo y vuelvan a ser objeto cuando se inicia el programa. Este enfoque funciona, pero crear todas las clases requiere tiempo y esfuerzo.
Gracias por una gran respuesta, esto es perfecto para mi propósito. Te daría un voto, pero no tengo suficiente reputación ... – MapaX
El código tiene una pequeña pérdida de memoria. Debe agregar: gratis (propiedades); para método propertyKeys. – MapaX
Buena llamada - Lo he arreglado. –