Patrón del mediador en Objective-C: objects del controller para realizar cálculos, etc.

Mi aplicación realiza cálculos bastante complejos con respecto a la valoración de las empresas. Recoge datos sin procesar de múltiples fonts (por ejemplo, los precios de las acciones de un service web almacenado como datos csv y datos fundamentales como datos xml).

Después de get los datos, la aplicación analiza los datos, los almacena en Core Data y realiza los cálculos. Los resultados del cálculo también se almacenan en los datos centrales.

Mi enfoque actual es hacer que los cálculos se agreguen como categorías al object Compañía (administrado) y al análisis de los datos csv y xml como categorías agregadas a los objects de datos (que no se muestran en la image). El código relacionado con la networking está en un object singleton separado (como se sugiere en el libro: Progtwigción iOS: The Big Nerd Ranch Guide, 3ª Edición).

Problema:

Como la comunicación de la networking y los cálculos son mutuamente dependientes (es decir, algunos cálculos pueden comenzar solo después de que se haya recibido un package de datos específico) y quiero usar múltiples subprocesss, terminé con bastante código en el controller de la vista.

Creo que debería usar un object coordinador siguiendo la idea del patrón del mediador y liberar mi controller de vista del código relacionado con la coordinación.

¿Qué piensas de esto?

  • ¿El patrón del mediador (object del coordinador) sería el enfoque correcto en su opinión?
  • ¿Cómo recomendaría configurar el object coordinador?
  • ¿Hay buenos tutoriales o muestras sobre este tema en la web o en un libro?

¡Gracias!

iOS ofrece dos excelentes tecnologías para esto: NSOperations y Grand Central Dispatch. Me siento más cómodo con el uso de operaciones para lo que estás describiendo, ya que es muy fácil crear conexiones entre operaciones, de modo que algo no comienza hasta que algo más termina. Las queues NSOperation funcionan en set con el sistema operativo para que el número de subprocesss y la carga general se administre para el dispositivo y los resources actuales.

Hay un proyecto de código abierto en github, "NSOperation-WebFetches-MadeEasy", que tiene un object de mediador que instancia en su class primaria (en este caso, su viewController, pero puede ser cualquier class) y ejecuta todas las operaciones a través de él , y le envía posts de return en el mainThread a un método de su class. Puede continuar con esto en 15 minutos: la class que desea es OperationsRunner y le indica qué hacer para agregarlo en el file .h. Puede usar esto tanto para búsquedas web (NSOperations concurrentes) como para operaciones no simultáneas. Incluso puede tener operaciones de locking ahora.

Lea sobre NSOperations y bloques en la Guía de progtwigción simultánea de Apple