Swift Data para Swift: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Swift Data: O Novo ORM da Apple para Swift

1. O que é e para que serve

Swift Data é um framework ORM (Object-Relational Mapping) moderno e leve, apresentado pela Apple na WWDC 2023. Ele foi projetado para gerenciar dados persistentes em aplicativos Swift, com suporte para iOS 17+, macOS 14+, tvOS 17+ e watchOS 10+. O Swift Data substitui o antigo Core Data, oferecendo uma abordagem mais simples, declarativa e type-safe para gerenciamento de banco de dados.

Para que serve o Swift Data? Principalmente, para simplificar drasticamente o código. Em vez de criar manualmente NSManagedObject, configurar contextos e escrever consultas complexas, o desenvolvedor descreve o modelo de dados usando classes Swift comuns e macros (@Model, @Attribute, @Relationship). O Swift Data gera automaticamente toda a lógica interna necessária: criação de tabelas, gerenciamento de alterações, rastreamento de dependências e sincronização com a UI via SwiftUI.

A principal vantagem é a integração profunda com SwiftUI. As alterações nos dados atualizam automaticamente a interface, sem necessidade de chamar manualmente objectWillChange.send() ou recarregar listas. Isso torna o Swift Data a escolha ideal para novos projetos em SwiftUI que exigem armazenamento local de dados (listas de tarefas, anotações, configurações, cache).

2. Instalação

O Swift Data faz parte da biblioteca padrão da Apple a partir do iOS 17 e macOS 14. Não é necessária instalação separada via gerenciadores de pacotes (pip, npm, cargo). Para usar, basta importar o framework no arquivo Swift.

Importante: A versão mínima de implantação (Deployment Target) do seu projeto deve ser iOS 17.0 ou macOS 14.0.

Comando para adicionar ao projeto (via Xcode):

// Swift Data não requer instalação. Basta importar:
import SwiftData

Se você usa o Swift Package Manager (SPM) para gerenciar dependências, o Swift Data não precisa ser adicionado como um pacote separado — ele já está embutido no SDK.

3. Início rápido — exemplo mínimo funcional

Vamos criar um aplicativo simples para armazenar uma lista de tarefas (To-Do).

import SwiftUI
import SwiftData

// 1. Definindo o modelo de dados
@Model
final class TaskItem {
    var title: String
    var isCompleted: Bool
    var createdAt: Date

    init(title: String, isCompleted: Bool = false) {
        self.title = title
        self.isCompleted = isCompleted
        self.createdAt = Date()
    }
}

// 2. Configurando o container no App
@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .modelContainer(for: TaskItem.self) // Cria o container automaticamente
    }
}

// 3. Usando os dados na View
struct ContentView: View {
    @Environment(\.modelContext) private var context
    @Query private var tasks: [TaskItem]

    var body: some View {
        NavigationStack {
            List {
                ForEach(tasks) { task in
                    HStack {
                        Text(task.title)
                        Spacer()
                        if task.isCompleted {
                            Image(systemName: "checkmark")
                        }
                    }
                }
                .onDelete(perform: deleteTasks)
            }
            .navigationTitle("Tarefas")
            .toolbar {
                ToolbarItem {
                    Button("Adicionar") {
                        let newTask = TaskItem(title: "Nova tarefa \(tasks.count + 1)")
                        context.in                    

Recommendations