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