Swift

Uso de Swift para obtener datos desde la API de indicadores.

A continuación se muestra el código de ejemplo para consultar a nuestra API desde el Lenguaje Swift. El ejemplo utiliza URLSession y Codable, y envía la cabecera User-Agent para identificar el cliente.

import Foundation

struct Indicador: Decodable {
    let fecha: String
    let valor: Double
}

struct Resumen: Decodable {
    let uf: Indicador
}

@main
struct FindicExample {
    static func main() async {
        guard let url = URL(string: "https://findic.cl/api/") else {
            print("URL inválida")
            return
        }

        let configuration = URLSessionConfiguration.default
        configuration.httpAdditionalHeaders = [
            "User-Agent": "findic-docs-swift/1.0",
            "Accept": "application/json"
        ]
        configuration.timeoutIntervalForRequest = 10

        let session = URLSession(configuration: configuration)

        do {
            let (data, response) = try await session.data(from: url)

            guard let httpResponse = response as? HTTPURLResponse,
                  httpResponse.statusCode == 200 else {
                print("Error en la solicitud")
                return
            }

            let resumen = try JSONDecoder().decode(Resumen.self, from: data)

            print("Fecha: \(resumen.uf.fecha)")
            print("Valor UF: $ \(resumen.uf.valor)")
        } catch {
            print("Error en la solicitud: \(error)")
        }
    }
}

El ejemplo utiliza async/await y URLSession.data(from:), disponibles desde iOS 15, macOS 12 y Swift 5.5.

Si compilas el ejemplo como un ejecutable de un solo archivo, agrega -parse-as-library a swiftc; de lo contrario, @main se considera código de nivel superior.

Más información del objeto JSON entregado en el resumen aquí.