¿Cómo puedo hacer mi propia clase personalizada serializable? Específicamente, quiero escribirlo en un archivo en iPhone, simplemente plist y thee class es solo una clase de instancia simple, solo NSStrings y tal vez un NSUrl.Haz una clase personalizada Serializable en Objective-c/iPhone?
15
A
Respuesta
33
Deseará implementar el NSCoding protocol. Implemente initWithCoder: y encodeWithCoder: y su clase personalizada funcionará con NSKeyedArchiver y NSKeyedUnarchiver.
Su initWithCoder: debería tener este aspecto:
- (id)initWithCoder:(NSCoder *)aDecoder
{
if(self = [super init]) // this needs to be [super initWithCoder:aDecoder] if the superclass implements NSCoding
{
aString = [[aDecoder decodeObjectForKey:@"aString"] retain];
anotherString = [[aDecoder decodeObjectForKey:@"anotherString"] retain];
}
return self;
}
y encodeWithCoder:
- (void)encodeWithCoder:(NSCoder *)encoder
{
// add [super encodeWithCoder:encoder] if the superclass implements NSCoding
[encoder encodeObject:aString forKey:@"aString"];
[encoder encodeObject:anotherString forKey:@"anotherString"];
}
Cuestiones relacionadas
- 1. ¿Por qué una clase interna serializable no es serializable?
- 2. Inconvenientes de marcar una clase como Serializable
- 3. Cómo hacer simplejson clase serializable
- 4. subclase de la clase Serializable padre que no serializable
- 5. jQuery - Haz solo una vez
- 6. Creando una clase sys.stdout personalizada?
- 7. Importar una clase personalizada en Java
- 8. Clasificación personalizada en una clase namedtuple
- 9. ¿Por qué es necesario marcar una clase como serializable?
- 10. Cómo crear una clase C# serializable desde el archivo XML
- 11. cómo probar en Java que una clase implementa Serializable correctamente (no solo es una instancia de Serializable)
- 12. Serializar un objeto que tiene una clase primaria no serializable
- 13. no marcadas como serializable error al serializar una clase
- 14. Cómo copiar una clase profunda sin marcar como Serializable
- 15. Agregue una colección de una clase personalizada a Settings.Settings
- 16. C#, Metro Application, clase de excepción personalizada
- 17. Herencia serializable
- 18. Crear una clase de cadena personalizada
- 19. Haz una compilación en dojo 1.7.2
- 20. ¿Se necesita un atributo serializable en la clase C# concreta?
- 21. ClassNotFoundException en clase serializable durante la actividad comenzará
- 22. ¿cómo funciona serializable en Java?
- 23. ¿Cuáles son los requisitos mínimos que debe tener, para decir que una excepción personalizada es serializable?
- 24. .Contains() en una lista de objetos de clase personalizada
- 25. Inflar un diseño xml en una clase de vista personalizada
- 26. Usando NSCoding en una subclase de clase personalizada
- 27. ¿Cómo consigo servicios (dependencias) en una clase personalizada
- 28. ¿Cómo crearía una clase de lista personalizada en python?
- 29. ¿Cómo creo una clase de evento personalizada en Javascript?
- 30. Paso de parámetros a una clase personalizada en la inicialización
+1 Es posible que tenga que llamar '[initWithCoder súper: aDecoder]' 'o [SUPER encodeWithCoder: codificador ] 'dependiendo de qué clase esté subclasificando. =) –
¡Do! Buen hallazgo - arreglado. –
Tengo una pregunta sobre las mejores prácticas ... ¿Debo hacer que la clase sea serializable o puedo dejarla en manos del desarrollador de la interfaz de usuario para serializarla en cualquier salida deseada? – Patricia