ios for dummies consumiendo una api rest con afnetworking y mantle

Post on 03-Feb-2016

231 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

iOS for DummiesConsumiendo una API REST con AFNetworking y Mantle

¿Qué vamos a ver?

• Presentación• Scaffolding• Alcatraz• CocoaPods• Mantle• AFNetworking• Implementación API de IT-eBooks

presentaciónQuién soy y qué vamos a realizar

Eduardo K. Palenzuela DariasDesarrollador

@kiliannet | kiliannet.com

IT-eBookshttp://www.it-ebooks.info | http://it-ebooks-api.info

scaffoldingCrear una estructura de aplicación mantenible y escalable

Scaffolding• 1 – Presentation

– Application• AppDelegate• Controllers• Views (xib / stroryboards)

– Support• Images• Languages• LaunchScreen• Supporting

• 2 – Business – Models– Services

• 3 – DataAccess– RESTEngine

• Utils

Scaffolding | Importante

•Sólo eliminar referencias•Añadir carpetas como grupos•Seleccionar la nueva ruta de Info.plist•Eliminar Info.plist de “Copy bundle resources”

ALCATRAZAñadir y mantener plugins o paquetes para Xcode

Alcatraz

• URL: http://alcatraz.io

• Añadir y mantener plugins o paquetes para Xcode

Alcatraz | Plugins• CocoaPods: https://github.com/kattrali/cocoapods-xcode-plugin

– Ayuda a integrar Cocoapods en nuestra solución.

• CocoaControls: https://github.com/yeahdongcn/CocoaControlsPlugin– Permite explorar en controles para integrar en nuestra solución y ademas nos facilita el trabajo de

integración en CocoaPods.

• FuzzyAutocomplete: https://github.com/FuzzyAutocomplete/FuzzyAutocompletePlugin– Mejora el IntelliSense del Xcode.

• OMColorSense: https://github.com/omz/ColorSense-for-Xcode– Ayuda a trabajar con UIColor.

• QuickLocalization: https://github.com/nanaimostudio/Xcode-Quick-Localization– Ayuda a crear texto localizado para implementar las traducciones.

• VVDocumenter-Xcode: https://github.com/onevcat/VVDocumenter-Xcode– Ayuda a documentar el código.

cocoapodsGestor de librerías de terceros

CocoaPods

• URL: https://cocoapods.org

• Es un gestor de librerías tipo línea de comando como puede ser Nuggets de .NET

CocoaPods | Instalación

• URL: http://code.tutsplus.com/tutorials/streamlining-cocoa-development-with-cocoapods--mobile-15938

• $ sudo gem update --system• $ sudo gem install cocoapods

CocoaPods | Integración

1. Crear un archivo llamado Podfile2. Añadir los Pods que queremos incluir en nuestro

proyecto.

– AFNetworking: https://github.com/AFNetworking/AFNetworking

– Mantle: https://github.com/Mantle/Mantle

1. Ejecutar “pod install”2. Cerrar el proyecto.3. Abrir el nuevo WorkSpace del proyecto.

mantleTipar respuestas de API a nuestros modelos de datos

Mantle

• URL: https://github.com/Mantle/Mantle

• Creado por el equipo de desarrollo de GitHub, permite tipar de forma facil y sencilla respuestas de peticiones API a nuestro modelo de datos.

Mantle | Importante

• Núcleo: MTLModel– Te permite implementar –hash, -isEqual • (usar tus clases como claves de diccionarios)

– Te implementa NSCopying y NSCoding • (guardar en NSUserDefaults)

• Serialización: MTLJSONSerializing

• Cast de datos: JSONTransformer

afnetworkingLibrería para hacer peticiones a Servicios Web

AFNetworking• URL:

https://github.com/AFNetworking/AFNetworking

• Creado por el equipo de Gowalla, nos permite hacer peticiones a Servicios Web.

• Esta contruido sobre URL Loading System de Apple.– Librerías de Apple de acceso a datos usando

protocolos estandar de Internet como HTTP.

AFNetworking | Clientes

• AFHTTPRequestOperationManager– Se basa en NSURLConnection– Para iOS 6 e inferiores.

• AFHTTPSessionManager– Se basa en NSURLSession– Para iOS 7 y superiores.

• Ambos clientes estan basados en bloques.

AFNetworking | PorquéPetición GET con NSHTTPURLResponse

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10.0f]; // 10 seg.

NSError *localError = nil;NSHTTPURLResponse *response = nil;NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&localError];

// Chequeamos el errorif (localError != nil) {}

// Chequeamos el HTTP statusif ([response isKindOfClass:[NSHTTPURLResponse class]]) {

NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;if (httpResponse.statusCode != 200) {}

}

// Pasamos los datos devueltos en JSON a NSDictionaryNSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&localError];

if (localError == nil) {} else {}

AFNetworking | Porqué

Petición GET con AFNetworking

[client GET:url parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {

// JSON serializado como NSDictionary.} failure:^(NSURLSessionDataTask *task, NSError *error) {

// Gestión de errores.}];

Enlaces

• IT-eBooks_beginhttp://kiliannet.es/tlp2015/IT-eBooks_begin.zip

• IT-eBooks_finalhttp://kiliannet.es/tlp2015/IT-eBooks_final.zip

• PPT: http://kiliannet.es/tlp2015/TLP2015_iOSForDummies.ppt

¡¡¡GRACIAS!!!@kiliannet | kiliannet.com

top related