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
URLamb 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
URLamb 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
URLRequestamb el mètodePOSTi 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ó
