Apple proporciona el NSArchiver y NSUnachriver para la serialización de objetos/deserialización, pero esto no puede manejar cualquier esquema XML personalizado. Por lo tanto, completar una estructura de objetos con los datos de cualquier esquema xml personalizado debe hacerse manualmente. Dado que la comunidad de desarrolladores de iPhone está creciendo rápidamente, muchos programadores novatos están desesperados por lidiar con las posibilidades de análisis XML disponibles.Aplicaciones iPhone
El SDK de iPhone solo proporciona NSXmlParser para el análisis de xml, que es más útil para leer ciertas partes de un archivo xml, que llenar una estructura de objetos completa, lo que realmente es un problema.
La otra posibilidad es la famosa biblioteca libxml, que está escrito en ANSI C - no es fácil de usar para alguien que comienza con la programación Objective-C y C nunca aprendió adecuada antes. Si hay muchos envoltorios disponibles, lidiar con xml puede ser un problema para los novatos.
Y aquí mi idea tiene lugar. Una biblioteca XmlSerializer que llena automáticamente una estructura de objeto podría facilitar mucho más y aumentar la calidad de la aplicación para muchos programadores. Mi idea debería funcionar así:
el archivo XML
<Test name="Michael" uid="28">
<Adress street="AlphaBetaGammastrasse 1" city="Zürich" postCode="8000" />
<Hobbies>
<Hobby describtion="blabla"/>
<Hobby describtion="blupblup"/>
</Hobbies>
</Test>
Las clases para llenar
@interface Test : NSObject {
NSString *name;
Adress *adress;
NSArray *hobbies;
int uid;
}
@property (nonatomic, copy) NSString *name;
@property (nonatomic, retain) Adress *adress;
@property (nonatomic, retain) NSArray *hobbies;
@property (nonatomic, readwrite) int uid;
@end
@interface Adress : NSObject {
NSString *street;
NSString *city;
int postCode;
}
@property (nonatomic, copy) NSString *street;
@property (nonatomic, copy) NSString *city;
@property (nonatomic, readwrite) int postCode;
@end
Cómo el serializador XML debe trabajar
NSError *error = nil;
XMLSerializer *serializer = [[XMLSerializer alloc] init];
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"TestFile" ofType:@"xml"]];
Test *test = [serializer deserializeWithData:data error:&error];
para llenar la estructura del objeto sólo necesita una línea de código:
Test *test = [serializer deserializeWithData:data error:&error];
Esto sería tan fácil de usar que cualquier programador novato podría utilizarlo. Para un uso más avanzado, el serializador podría ser configurable.
¿Qué le parece, ¿sería una biblioteca útil y popular para el iPhone y OSX aplicaciones?
Editar: Puedes ver el proyecto here, pero está lejos del lanzamiento.
Aquí hay algo similar que llamé: http://kpmattius.wordpress.com/2011/06/07/objective-c-serialization/ Si alguien tiene tiempo, pueden hacerlo más, pero a mí me sirve: D –
Esto ayudará ... http://code.google.com/p/wonderxml/ – hrishib