2012-06-10 9 views
5

Tengo un objeto de datos básicos y una interfaz web REST que usa un valor diferente para el mismo atributo. El objeto gestionado tiene el atributo llamado "tipo" que es un entero (enumeración), la interfaz REST tiene un valor de cadena llamado "tipo" (cadenas como: "camión", "automóvil", "ciclomotor").¿Cómo cambio los valores de los atributos al mapear a REST usando Restkit?

Transformo el valor de cadena a entero al obtener el objeto usando el método RKObjectLoaderDelegate objectLoader:willMapData:. Espero que así sea como debería hacer esto.

Mi pregunta: Al poner/publicar el objeto, ¿cómo o dónde transformo el valor de entero (enum) a valores de cadena? ¿Hay algún momento en el proceso de serialización en el que pueda manipular valores para una acción put/post? ¿Debo perpahps la subclase del serializador o RKManagedObjectMapping, o se está llamando a mi delegado en algún momento para poder cambiar los valores de un atributo?

Respuesta

9

Puede resolver esto creando una categoría para la clase (NSManagedObject) que está mapeando, y agregando propiedades especiales en esta categoría que serán utilizadas por Restkit. Agregue una propiedad typeString en la categoría que convierte el enum (tipo) en una cadena y asigne el atributo "typeString" a json, en lugar de "tipo". Parece que este para la recepción:

[mapping mapKeyPath:@"type" toAttribute:@"typeString"] 

y como este para enviar:

[serializationMapping mapKeyPath:@"typeString" toAttribute:@"type"] 

De esta manera no es necesario utilizar objectLoader:willMapData: en absoluto, y la conversión está muy bien integrada en el objeto (categoría).

+0

simplemente increíble! Busqué mucho para encontrar una buena solución, y aquí está. Gracias. – NDY

Cuestiones relacionadas