Programación en Swift y SwiftUI para iOS Developers

Foundation Models en Swift

En la WWDC 2025, Apple presentó el framework Foundation Models, una nueva forma para que cualquier iOS developer pueda integrar modelos de lenguaje directamente en sus aplicaciones usando programación Swift. Este framework permite crear experiencias inteligentes sin depender de servicios externos y manteniendo la privacidad del usuario.

En este tutorial aprenderás cómo utilizar Foundation Models con Swift, SwiftUI y Xcode para desarrollar aplicaciones compatibles con iOS, macOS y watchOS.

¿Qué es Foundation Models?

Foundation Models es un framework nativo de Apple que proporciona acceso a modelos de lenguaje ejecutados en el propio dispositivo. Para los desarrolladores Swift, esto significa que la inteligencia artificial se integra como cualquier otro framework del sistema.

Requisitos previos

  • Xcode actualizado
  • Dispositivo compatible con Apple Intelligence
  • Conocimientos básicos de Swift y SwiftUI
  • Familiaridad con programación asíncrona

Importar Foundation Models en tu proyecto

Para empezar a usar Foundation Models, simplemente importa el framework en tu archivo Swift.

import FoundationModels

Primer ejemplo: generación de texto

Vamos a crear una función básica que genere texto a partir de un prompt utilizando el modelo de lenguaje del sistema.

import FoundationModels

func generarTexto(prompt: String) async throws -> String {
    let modelo = LanguageModel()
    let configuracion = LanguageModelConfiguration()
    let sesion = try modelo.session(configuration: configuracion)

    let resultado = try await sesion.generate(prompt: prompt)
    return resultado.text
}

Integración con SwiftUI

Ahora vamos a integrar esta funcionalidad en una vista creada con SwiftUI.

import SwiftUI

struct ContentView: View {
    @State private var textoUsuario = ""
    @State private var respuesta = ""

    var body: some View {
        VStack(spacing: 16) {
            TextField("Escribe una pregunta", text: $textoUsuario)
                .textFieldStyle(.roundedBorder)

            Button("Generar respuesta") {
                Task {
                    await generar()
                }
            }

            ScrollView {
                Text(respuesta)
                    .frame(maxWidth: .infinity, alignment: .leading)
            }
        }
        .padding()
    }

    func generar() async {
        do {
            respuesta = try await generarTexto(prompt: textoUsuario)
        } catch {
            respuesta = "Error al generar la respuesta"
        }
    }
}

Generación guiada con tipos Swift

Foundation Models permite generar datos estructurados directamente en tipos Swift, lo que mejora la seguridad y fiabilidad del código.

import FoundationModels

struct Recomendacion: Generable {
    let titulo: String
    let descripcion: String
    let duracion: Int
}

Ahora solicitamos al modelo que genere una instancia de este tipo.

let prompt = "Crea una recomendación de actividad para un fin de semana en Madrid"
let resultado = try await sesion.generate(prompt: prompt, as: Recomendacion.self)

Streaming de resultados

Para mejorar la experiencia de usuario, puedes mostrar la respuesta del modelo a medida que se genera.

let stream = try await sesion.stream(prompt: "Resume este texto en pocas líneas")

for await fragmento in stream {
    respuestaParcial += fragmento
}

Manejo de contexto en sesiones

Las sesiones permiten mantener contexto entre múltiples interacciones.

let sesion = try modelo.session(configuration: configuracion)
try await sesion.addContext("El usuario está planificando un viaje")

Ejemplo completo: asistente de viajes

Este ejemplo muestra un ViewModel que utiliza Foundation Models para generar un plan de viaje.

@MainActor
class TravelViewModel: ObservableObject {
    @Published var resultado = ""

    func generarPlan(destino: String) async {
        let prompt = "Genera un plan de viaje de tres días en \(destino)"
        do {
            resultado = try await generarTexto(prompt: prompt)
        } catch {
            resultado = "No se pudo generar el plan"
        }
    }
}

Vista SwiftUI asociada:

struct TravelView: View {
    @StateObject private var viewModel = TravelViewModel()
    @State private var destino = ""

    var body: some View {
        VStack {
            TextField("Destino", text: $destino)
                .textFieldStyle(.roundedBorder)

            Button("Generar plan") {
                Task {
                    await viewModel.generarPlan(destino: destino)
                }
            }

            ScrollView {
                Text(viewModel.resultado)
            }
        }
        .padding()
    }
}

Conclusión

Foundation Models supone un avance clave para cualquier iOS developer que trabaje con Swift, SwiftUI y Xcode. Permite integrar inteligencia artificial directamente en aplicaciones para iOS, macOS y watchOS, manteniendo privacidad, rendimiento y una API clara.

Dominar este framework es fundamental para el futuro de la programación Swift dentro del ecosistema Apple.

Si tienes cualquier duda sobre este artículo, contacta conmigo y estaré encantado de ayudarte 🙂. Puedes contactar conmigo en mi perfil de X o en mi perfil de Instagram

Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Article

Cómo detectar el modo oscuro en SwiftUI

Related Posts