Creador y mapeador de clases para RestKit

  2 mins read

Una de las cosas que más rabia me dan como programador es tener que crear/mapear un modelo de objetos. Es una tarea poco agradecida y repetitiva. Por eso mismo siempre procuro usar mecanismos automáticos, pero, en el framework RestKit de iOS no hay ninguno, así que me decidí a hacer una solución.

Reskit y el modelo de objetos

Reskit, es un framework consumidor de APIs tipo Rest. Dicho framework necesita de un modelo de objetos para funcionar, este modelo tiene que estar “mapeado” para funcionar, es decir, tienes que decir que propiedades del JSON/XML que devuelve el servidor se corresponden con los atributos de las clases de ObjC.

Como usar el creador de clases

Bajamos el código fuente de GitHub.

Una vez bajado ejecutaremos el programa pasandole 2 parámetros:

  1. La ruta al script SQL
  2. La ruta donde guardar el modelo

El programa automaticamente creará y mapeara el modelo.

Para los que no sepan como ejecutar un programa con parámetros a través de eclipse:

  1. Abrimos el proyecto
  2. Hacemos clic derecho sobre el proyecto y nos dirigimos hacia Run Configurations:Run with parameters eclipse
  3. En run configurations seleccionamos la pestaña arguments y los separamos mediante un salto de linea.
  4. Al ejecutarlo creará todas las clases en el directorio indicado y por consola sacará el RKObjectMapping que deberemos añadir en el Delegate de nuestra aplicación para que RestKit reconozca dichas clases.

Limitaciones

  • Solo he probado los dumps de SQLEditor de Mac y MYSQL workbench por lo que si obtienes el script sql de otro programa, puede no funcionar.
  • El reconocimiento de foreign keys es mediate el nombre del campo, es decir, solo se reconocen foreign keys con el nombre: “id_campo” o “campo_id”, si sigues esa estructura no debes tener problemas. Si en tu bdd se usa otro sufijo o prefijo, puedes cambiar el código fuente.
  • Si tenemos una relación de una tabla consigo misma, al ejecutar el programa nos encontraremos con un bucle infinito debido a la forma de malear las clases.
  • Obviamente estas limitaciones son ni más ni menos porque en mi caso no he necesitado más y por eso adjunto el código fuente, para que si alguien necesita más pueda modificar a su antojo dicho programa.
Written by:

Christian Panadero Martinez