¿Tienes una idea para una aplicación pero te falta el conocimiento de programación para empezar a construirla? En esta serie semanal de blogs, te llevaré a ti, el no-programador, paso a paso a través del proceso de creación de aplicaciones para el iPhone, iPod touch y iPad. Acompáñame cada semana en esta aventura, y experimentarás lo divertido que puede ser convertir tus ideas en realidad! Esta es la parte 17 de la serie. Si acabas de empezar ahora, mira el comienzo de la serie aquí.( Este post ha sido actualizado a Swift 1.2, iOS 8 y Xcode 6.3 .)

En mi anterior post, aprendiste a generar clases de Swift a partir de entidades en un modelo de datos y se te presentó la clase mmBusinessObject , que proporciona un envoltorio fácil de usar para las clases de Core Data. En esta semana's post, vamos a crear nuestros controladores de negocios personalizados app's y los llevaremos a una prueba de manejo!

Para realizar los pasos descritos en este post, puedes obtener la última versión del proyecto iAppsReview en este enlace. Recomiendo que sigas los pasos de este post tú mismo, pero si te quedas atascado, puedes obtener la aplicación terminada en este enlace.

Creando controladores de negocios

La figura 1 muestra los tres controladores de negocio que necesitamos crear para la aplicación, y los tres serán subclases de la clase ABusinessObject .

Figura 1 – Las clases de controladores de negocio son subclases de ABusinessObject .

Creando el Controlador de Negocios de Revisión

En primer lugar, vamos a crear un objeto de control de negocio Review .

  1. Abre el proyecto iAppsReview en Xcode.
  1. En el Navegador de Proyectos, haz clic con el botón derecho del ratón en el archivo AppCategoryEntity.swift (de modo que el nuevo archivo se añada directamente debajo de AppCategoryEntity.swift ), y selecciona New File… en el menú emergente.
  1. En el lado izquierdo del diálogo Nuevo Archivo bajo la sección iOS , seleccione Fuente . En el lado derecho del diálogo, seleccione la plantilla Swift File , y luego haga clic en el botón Next (Figura 2).

Figura 2 – Crear una nueva clase Swift .

  1. Haz clic en el botón Siguiente para iniciar el diálogo Guardar archivo. En el cuadro Guardar como , cambia el nombre del archivo a Review.swift . Haz clic en el botón Create , que añade el nuevo archivo de clase Review al Project Navigator como se muestra en Figura 3.

Figura 3 – El archivo de clase Review recientemente agregado

  1. Ahora vamos a añadir una declaración de clase al archivo de código. En el archivo de código debajo de la declaración de la Fundación de importación, escriba la palabra class . Esto hace que aparezca la ventana de finalización del código ( Figura 4 ). Selecciona class – Swift Subclass y pulsa return .

Figura 4 – Declarar una nueva clase

En el marcador de posición del nombre , introduzca Revisión. Pulsa la pestaña e introduce ABusinessObject en el marcador de posición de superclase . Cuando termines, tu código debe ser como Figura 5.

Figura 5 – Declarando una subclase de Swift

  1. No necesitamos ningún método todavía, así que vaya al marcador de propiedades y métodos y pulse la tecla de borrar.

Este código utiliza la característica genérica de Swift&apos para asociar la clase ReviewEntity con el controlador de negocios Review . Esto permite evitar tener que escribir el nombre de la clase de entidad cada vez que se quiera crear, recuperar, actualizar o borrar una ReviewEntity . Para obtener más información sobre cómo funciona esto, consulta mi entrada en el blog sobre genéricos en este enlace.

Creación del controlador empresarial de AppCategory

Ahora vamos a crear un controlador de negocios AppCategory . Las instrucciones son muy parecidas a las de la sección anterior, así que I'las abreviaré un poco.

  1. Haga clic con el botón derecho del ratón en el archivo iAppsReview.xcdatamodeld en el Project Navigator (para que el nuevo archivo se añada directamente debajo de él), y seleccione New File… en el menú emergente.
  1. En el lado izquierdo del diálogo Nuevo Archivo bajo la sección iOS , seleccione Fuente . En el lado derecho del diálogo, seleccionar la plantilla Swift File .
  1. Haz clic en el botón Siguiente para iniciar el diálogo Guardar archivo. En el cuadro Guardar como , cambia el nombre del archivo a AppCategory.swift .Haz clic en el botón Create para añadir el nuevo archivo de clase AppCategory al Project Navigator como se muestra en Figura 6.

Figura 6 – El nuevo archivo de clase AppCategory

  1. Cambiar los marcadores de posición de nombre y superclase y eliminar el marcador de posición de propiedades y métodos como se muestra en Figura 7 .

Figura 7 – Declarar la clase AppCategory .

De nuevo, esto especifica el nombre de la clase de entidad asociada con el controlador del negocio.

Creando el Controlador de Negocios del Usuario

Ahora vamos a crear nuestra clase final, el Usuario controlador de negocios.

  1. Haz clic con el botón derecho del ratón en el archivo ReviewEntity.swift del Project Navigator (para que el nuevo archivo se añada directamente debajo de él), y selecciona New File… en el menú emergente.
  1. En el lado izquierdo del diálogo Nuevo Archivo bajo la sección iOS , seleccione Fuente . En el lado derecho del diálogo, seleccionar la plantilla Swift File .
  1. Haz clic en el botón Siguiente para iniciar el diálogo Guardar archivo. En el cuadro Guardar como, cambia el nombre de la clase a User.swift . Haz clic en el botón Create para añadir el nuevo archivo de la clase User al Project Navigator como se muestra en Figura 8.

Figura 8 – El nuevo archivo de clase de usuario

  1. Cambiar los marcadores de posición de nombre y superclase y eliminar el marcador de posición de propiedades y métodos como se muestra en Figura 9 .

Figura 9 – Declarar la clase de Usuario .

Esto especifica que UserEntity es el nombre de la clase de entidad asociada al controlador del negocio.

Usando controladores de negocio con controladores de vista

Cuando colocas todo el código de manipulación de entidades en los controladores empresariales, creas una arquitectura de aplicaciones que es más fácil de concebir, crear y mantener. Para usar el código dentro de estos controladores de negocio, necesitas instanciarlos desde dentro de los controladores de vista de tu aplicación y llamar a los métodos que crean, recuperan, actualizan y eliminan entidades.

La figura 10 muestra la colaboración entre los controladores de vista y los controladores de negocio.

Figura 10 – Los controladores de vista pueden recurrir a los servicios de los controladores de negocio para manipular las entidades.

La agrupación de controladores de vista y controladores de negocios que ves en esta figura es en realidad lo que vas a establecer en esta y en las próximas publicaciones. Aunque el diagrama sólo muestra un controlador de negocio referenciado desde cada controlador de vista, un único controlador de vista puede trabajar con múltiples controladores de negocio.

Configuración de la escena de la categoría de aplicaciones

Como prometimos anteriormente en esta serie de blogs, vamos a tomar el prototipo de la aplicación iAppsReview y convertirla en una aplicación real. Empezaremos con la escena de la categoría de aplicaciones ya que es muy fácil.

Actualmente, la escena App Category contiene una lista codificada de las categorías que añadió cuando creó el proyecto por primera vez ( Figura 11 ).

Figura 11 – La Categoría de aplicación escena

En lugar de tener una lista de categorías codificadas, queremos cambiar esta escena para que las categorías se pueblen de una lista de CategoryEntity objetos almacenados en la base de datos y recuperados dinámicamente en tiempo de ejecución. Esto nos permite añadir nuevas categorías a la lista en el futuro sin cambiar la aplicación. Empecemos!

  1. En el Project Navigator, selecciona el archivo Main.Storyboard y desplaza el storyboard para que puedas ver la escena App Category .
  1. Como se muestra en Figura 11 , esta escena tiene una vista de tabla que contiene nueve celdas prototipo que tienen todas el mismo formato. Sólo necesitamos una celda que se utilizará como prototipo para todas las celdas de esta tabla, así que eliminemos las últimas ocho celdas de la vista de tabla.

Para ello, haga clic en la segunda celda de la vista de tabla para seleccionarla, mantenga pulsada la tecla de mayúsculas y haga clic en las celdas tercera a novena para seleccionarlas también;

  1. Con estas celdas seleccionadas, pulse la tecla borrar para borrar las celdas y dejar la primera celda restante como se muestra en Figura 12.

Figura 12 – Borrar todas las celdas excepto la primera Categoría de aplicación .

  1. En la escena de la categoría de aplicaciones , haz clic en el área gris debajo de la vista de tabla. Ve al Inspector de Atributos (tercer botón de la derecha en la barra de herramientas del Inspector) y cambia el atributo Contenido de Células estáticas a Prototipos dinámicos . Al hacer esto, se añade una etiqueta de encabezado de Celdas Prototipo encima de la vista de tabla ( Figura 13 ).

Figura 13 – Poner el contenido de la vista de tabla a Prototipos Dinámicos .

Las etiquetas de encabezado se utilizan para describir el contenido de una vista de tabla, pero como la barra de navegación ya contiene el texto Categoría de aplicación , no es necesario utilizar la etiqueta de encabezado. Simplemente puedes ignorar la etiqueta de encabezado y no aparecerá en tiempo de ejecución.

  1. Haga clic en la celda de la vista de tabla Entretenimiento para seleccionarla, y luego vaya al Inspector de Atributos y establezca el Identificador de la celda a CategoríaCélula ( Figura 14 ).

Figura 14 – Poner el identificador de la célula a CategoryCell .

Este identificador le permite referenciar esta celda específica del código dentro de su controlador de vista, que crearemos a continuación.

Creando un AppCategoryViewController

Ahora necesitamos crear un controlador de vista de tabla para la escena de la categoría de aplicaciones . Este controlador de la vista de tabla creará una instancia del controlador de negocio AppCategory y llenará la vista de tabla con objetos AppCategoryEntity .

  1. Haz clic con el botón derecho del ratón en la carpeta de grupo iAppsReview del Project Navigator, y selecciona New File… en el menú contextual.
  1. En el lado izquierdo del diálogo Nuevo Archivo bajo la sección iOS , seleccione Fuente . En el lado derecho del diálogo, seleccionar la plantilla Cocoa Touch Class , y luego hacer clic en Next .
  1. En el siguiente paso del diálogo, establezca la Subclase de a UITableViewController , luego establezca Clase a AppCategoryViewController ( Figura 15 ).

Figura 15 – Crear AppCategoryViewController como una subclase de UITableViewController .

  1. Haz clic en el botón Next para mostrar el diálogo de Guardar archivo, y luego haz clic en Create para añadir el nuevo archivo de clase AppCategoryViewController al proyecto.
  1. Siempre que se crea un nuevo controlador de vista para una escena en particular, es una buena idea ir inmediatamente a esa escena y asociarlo con la escena.

Para ello, ve al Project Navigator, selecciona el archivo Main.storyboard y luego haz clic en la barra de estado en la parte superior de la escena App Category para seleccionar el controlador de la vista de tabla. Sabrás que lo has seleccionado correctamente cuando aparezca un resaltado azul alrededor de la escena como se muestra en Figura 16 . A continuación, ve al Inspector de identidad (tercer botón de la izquierda en la barra de herramientas del Inspector) y cambia la clase al nuevo AppCategoryViewController .

Figura 16 – Configurar la App Category view controller$0027s Class a AppCategoryViewController .

  1. Volvamos y configuremos la clase AppCategoryViewController . Selecciona AppCategoryViewController.swift en el Project Navigator, y añade las declaraciones de propiedades que se muestran en Figura 17 debajo de la declaración de la clase (no te olvides de añadir los rizos).

Figura 17 – Añadir propiedades a la clase.

La propiedad appCategory contiene una referencia al objeto AppCategory del controlador de negocio, y la propiedad appCategoryList de la matriz se usará para contener los objetos AppCategoryEntity devueltos por el controlador de negocio.

  1. En el método view controller$0027s viewDidLoad , borra todas las líneas de comentarios existentes (las líneas en verde) y añade el código que se muestra en Figura 18 en su lugar.

Figura 18 – Agregar código que recupera una lista de AppCategoryEntity objetos

Este código llama al método getAllEntities en el controlador de negocio appCategory, almacenando las entidades resultantes en la matriz appCategoryList .Como su nombre indica, este método devuelve todas las entidades de un tipo determinado.La clase AppCategory (así como todas sus otras clases de controlador de negocio) hereda el método getAllEntities de la clase mmBusinessObject . En lugar de tener que escribir varias líneas de código (como tendría que hacer con los datos centrales de salida), sólo necesita una línea de código para recuperar los objetos CategoryEntity .Esta es la belleza de la herencia y encapsulación orientada a objetos!

  1. Ahora es el momento de cambiar los métodos del controlador de la vista de tabla que se utilizan para llenar la vista de tabla asociada en la escena Categoría de aplicación . En un próximo post hablaré de los controladores de vista de tabla con más detalle, pero por ahora sólo te daré la información que necesitas saber para entender lo básico.

Desplácese hacia abajo hasta el número de secciones en la tabla de vista: . Este método se utiliza para especificar el número de secciones en la vista de tabla. Borrar la línea que comienza con #warning .Dado que esta vista de tabla sólo tiene una sección, cambia el método para que devuelva 1 como se muestra en Figura 19.

Figura 19 – El numberOfSectionsInTableView: especifica el número de secciones en la vista de tabla.

  1. Desplácese hacia abajo hasta el número de la sección de filas: . Este método especifica el número de filas en una sección particular de la vista de tabla. Borra la línea #warning y cambia la sentencia return al código que se muestra en Figura 20 .

Figura 20 – La tablaView:numberOfRowsInSection: especifica el número de filas en una sección de la vista de tabla.

Dado que sólo hay una sección en esta vista de tabla, no tenemos que comprobar el número de la sección que se pasa a este método. El código que se ha añadido devuelve el número de objetos AppCategoryEntity en la matriz appCategoryList . Esto hace que la vista de tabla cree una fila para cada objeto de entidad en la matriz.

  1. Ahora desplácese hacia abajo hasta la tablaView:cellForRowIndexPath: . Descomente este método borrando los caracteres de comentario /* que están encima y los caracteres de comentario */ que están debajo. Cambie el código de este método al código que se muestra en Figura 21 .

Figura 21 – tableView:cellForRowAtIndexPath configura las filas en la vista de tabla

Este método es llamado una vez por cada AppCategoryEntity en la matriz appCategoryList . La primera línea de código llama a un método en la vista de tabla pidiéndole una celda con el identificador CategoryCell . Este es el identificador que especificaste para la celda restante en la escena de App Category antes en este post. La vista de tabla devuelve la celda del prototipo con ese identificador.

A continuación, este código obtiene la AppCategoryEntity en la appCategoryList con el número de fila especificado. En Swift, las colecciones se numeran empezando por el cero. Por lo tanto, una colección con 10 artículos se numeraría del 0 al 9. La primera vez que se llama a este método, se pasa un valor cero como número de fila. Ese valor cero se utiliza entonces para referenciar el primer elemento de la appCategoryList y se devuelve el primer objeto AppCategoryEntity de esa matriz. La siguiente vez que se llama al método, se pasa un 1 y se devuelve el segundo AppCategoryEntity de la lista, y así sucesivamente.

Después de recuperar una entidad, su nombre y su valor se almacenan en la etiqueta de texto principal de la celda, y la celda se devuelve desde el método.

  1. Ahora que la configuración de la escena de la categoría de la aplicación está completa, es hora de ejecutar la aplicación para ver cómo se ve en tiempo de ejecución. Para ello, haz clic en el botón Ejecutar en Xcode. Cuando la aplicación aparezca en el Simulador, selecciona Write a Review y luego en la escena Write Review , haz clic en la fila App Category y verás la escena App Category que se muestra en Figura 25 .

Figura 25 – ¡La escena de la categoría de aplicaciones está vacía!

¡Quizás te sorprenda ver que no hay filas en la vista de la mesa! Eso es porque nunca creamos una base de datos y añadimos ningún registro a ella.

Conclusión

Cuando tu aplicación intenta acceder por primera vez a una base de datos, si no existe, Core Data crea automáticamente una base de datos vacía para ti. En mi próximo post, echaremos un vistazo a esta base de datos, y luego añadiremos objetos CategoryEntity a la misma y veremos cómo llenan la lista en tiempo de ejecución!

<>

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *