Estoy mapeando datos formateados en JSON desde un servidor web a clases de Objective C (modelos NSManagedObjects modelados en Xcode, manejados por Core Data). Para cada atributo de la clase Objective C, necesito:¿Cómo asignar los objetos JSON a las clases Objective C?
- determinar si existe la clave del atributo en el objeto JSON,
- determinar si el valor de esa clave no es nulo, y
- Pase el valor a la instancia de clase modelada si las condiciones 1 y 2 son verdaderas
en este momento, estoy difíciles de codificar esta secuencia para cada uno de los atributos, por lo que cada atributo necesita un código como el siguiente:
// dictObject is the JSON object converted into a NSDictionary,
// and person is the instance of the modeled class
if ([dictObject objectForKey:@"nameFirst"] &&
[dictObject objectForKey:@"nameFirst"] != [NSNull null]) {
person.nameFirst = [dictObject objectForKey:@"nameFirst"];
}
Además de requerir un lote de código para manejar las diferentes clases, esto parece kludgy y frágil: cualquier cambio de nombre (o localización del idioma) haría que la asignación fallara.
Tiene que haber una mejor manera ... ¿Qué me estoy perdiendo?
Gracias pokstad-no había visto eso antes. Descargué RestKit y he estado jugando con él ... agrega mucho volumen a la aplicación (¡36 MB para la carpeta de origen!), Pero bien puede valer la pena. Definitivamente aceptaré tu respuesta si la uso. (Todavía espero que alguien responda con un enfoque más "nativo") – Dan
No hay problema. No estoy seguro de lo que quieres decir con nativo. Ese ReskKit está hecho específicamente para aplicaciones basadas en Cocoa. Además, el tamaño del código fuente casi siempre es más grande que el tamaño binario, por lo que no me preocuparía por los 36 MB en lo que respecta al tamaño binario compilado. – pokstad
Bastante limpio: RestKit parece una excelente solución, pero si lo implemento, aprenderé cómo implementar RestKit, en lugar de aprender mejor las habilidades de Obj-C :) (Aunque, por supuesto, podría argumentarse que aprender a implementar marcos bien _es_ aprender Obj-C better.) – Dan