En aquest tema, aprendrem com treballar amb xarxes i APIs en les aplicacions desenvolupades amb Xcode. Aquest és un aspecte crucial per a moltes aplicacions modernes que necessiten comunicar-se amb serveis web per obtenir dades, enviar informació o interactuar amb altres sistemes.
Objectius d'Aprenentatge
- Entendre els conceptes bàsics de les xarxes i les APIs.
- Aprendre a fer sol·licituds HTTP des de Swift.
- Gestionar respostes de xarxa i errors.
- Processar dades JSON.
- Integrar APIs de tercers en les aplicacions.
Conceptes Bàsics de Xarxes i APIs
Què és una API?
Una API (Application Programming Interface) és un conjunt de regles que permeten a una aplicació comunicar-se amb un altre servei. Les APIs sovint utilitzen el protocol HTTP per enviar i rebre dades.
Tipus de Sol·licituds HTTP
Les sol·licituds HTTP més comunes són:
- GET: Recupera dades d'un servidor.
- POST: Envia dades al servidor.
- PUT: Actualitza dades en el servidor.
- DELETE: Elimina dades del servidor.
Fer Sol·licituds HTTP amb URLSession
Exemple de Sol·licitud GET
import Foundation // URL de l'API let url = URL(string: "https://jsonplaceholder.typicode.com/posts")! // Creació de la sol·licitud let task = URLSession.shared.dataTask(with: url) { data, response, error in // Comprovació d'errors if let error = error { print("Error: \(error)") return } // Comprovació de la resposta guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else { print("Resposta no vàlida") return } // Processament de les dades if let data = data { do { // Convertir les dades a JSON let json = try JSONSerialization.jsonObject(with: data, options: []) print("JSON: \(json)") } catch { print("Error en processar el JSON: \(error)") } } } // Iniciar la sol·licitud task.resume()
Explicació del Codi
- Creació de la URL: Es crea una instància de
URL
amb l'adreça de l'API. - Creació de la Sol·licitud: Es crea una tasca de dades (
dataTask
) ambURLSession.shared
. - Gestió de la Resposta: Es comprova si hi ha errors i si la resposta és vàlida.
- Processament de les Dades: Si les dades són vàlides, es converteixen a JSON i es mostren.
Exemple de Sol·licitud POST
import Foundation // URL de l'API let url = URL(string: "https://jsonplaceholder.typicode.com/posts")! // Dades a enviar let postData = [ "title": "foo", "body": "bar", "userId": 1 ] // Convertir les dades a JSON let jsonData = try! JSONSerialization.data(withJSONObject: postData, options: []) // Creació de la sol·licitud var request = URLRequest(url: url) request.httpMethod = "POST" request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.httpBody = jsonData // Creació de la tasca let task = URLSession.shared.dataTask(with: request) { data, response, error in // Comprovació d'errors if let error = error { print("Error: \(error)") return } // Comprovació de la resposta guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 201 else { print("Resposta no vàlida") return } // Processament de les dades if let data = data { do { // Convertir les dades a JSON let json = try JSONSerialization.jsonObject(with: data, options: []) print("JSON: \(json)") } catch { print("Error en processar el JSON: \(error)") } } } // Iniciar la sol·licitud task.resume()
Explicació del Codi
- Creació de la URL: Es crea una instància de
URL
amb l'adreça de l'API. - Dades a Enviar: Es defineixen les dades a enviar en format diccionari.
- Convertir a JSON: Es converteixen les dades a JSON.
- Creació de la Sol·licitud: Es crea una sol·licitud
URLRequest
amb el mètodePOST
i es configuren les capçaleres. - Gestió de la Resposta: Es comprova si hi ha errors i si la resposta és vàlida.
- Processament de les Dades: Si les dades són vàlides, es converteixen a JSON i es mostren.
Exercicis Pràctics
Exercici 1: Fer una Sol·licitud GET
- Crea una sol·licitud GET a l'API
https://jsonplaceholder.typicode.com/users
. - Mostra els noms dels usuaris en la consola.
Solució
import Foundation let url = URL(string: "https://jsonplaceholder.typicode.com/users")! let task = URLSession.shared.dataTask(with: url) { data, response, error in if let error = error { print("Error: \(error)") return } guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else { print("Resposta no vàlida") return } if let data = data { do { let json = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] json?.forEach { user in if let name = user["name"] as? String { print("Nom: \(name)") } } } catch { print("Error en processar el JSON: \(error)") } } } task.resume()
Exercici 2: Fer una Sol·licitud POST
- Crea una sol·licitud POST a l'API
https://jsonplaceholder.typicode.com/posts
. - Envia un nou post amb títol, cos i ID d'usuari.
- Mostra la resposta en la consola.
Solució
import Foundation let url = URL(string: "https://jsonplaceholder.typicode.com/posts")! let postData = [ "title": "Nou Post", "body": "Aquest és el cos del nou post.", "userId": 1 ] let jsonData = try! JSONSerialization.data(withJSONObject: postData, options: []) var request = URLRequest(url: url) request.httpMethod = "POST" request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.httpBody = jsonData let task = URLSession.shared.dataTask(with: request) { data, response, error in if let error = error { print("Error: \(error)") return } guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 201 else { print("Resposta no vàlida") return } if let data = data { do { let json = try JSONSerialization.jsonObject(with: data, options: []) print("JSON: \(json)") } catch { print("Error en processar el JSON: \(error)") } } } task.resume()
Resum
En aquesta secció, hem après com fer sol·licituds HTTP GET i POST utilitzant URLSession
en Swift. Hem vist com gestionar respostes de xarxa, processar dades JSON i integrar APIs en les nostres aplicacions. Aquestes habilitats són essencials per desenvolupar aplicacions modernes que necessiten comunicar-se amb serveis web.
Dominar Xcode: De Principiant a Avançat
Mòdul 1: Introducció a Xcode
- Començant amb Xcode
- Entenent la Interfície de Xcode
- Creant el teu Primer Projecte Xcode
- Navegació Bàsica de Xcode
Mòdul 2: Conceptes Bàsics de Swift a Xcode
- Introducció a la Programació en Swift
- Variables i Constants
- Tipus de Dades i Operadors
- Flux de Control
- Funcions i Closures
Mòdul 3: Construint Interfícies d'Usuari
- Introducció a Interface Builder
- Dissenyant amb Storyboards
- Auto Layout i Constriccions
- Utilitzant les Previsualitzacions de Xcode
- Creant Components UI Personalitzats
Mòdul 4: Treballant amb Dades
Mòdul 5: Depuració i Proves
- Conceptes Bàsics de Depuració
- Utilitzant Breakpoints
- Proves Unitàries
- Proves d'Interfície d'Usuari
- Proves de Rendiment
Mòdul 6: Funcions Avançades de Xcode
- Utilitzant Instruments per a l'Optimització del Rendiment
- Tècniques Avançades de Depuració
- Configuracions de Compilació Personalitzades
- Scripting amb Xcode
- Integració amb Sistemes d'Integració Contínua
Mòdul 7: Desplegament d'Aplicacions
- Preparant per a la Submissió a l'App Store
- Creant Captures de Pantalla per a l'App Store
- Gestionant les Metadades de l'App Store
- Enviant la teva Aplicació
- Millors Pràctiques Post-Submissió