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 Também na biblioteca
Validação de dados em Swift: biblioteca Validator
Internacionalização (i18n) em PHP: biblioteca gettext e abordagens modernas
Biblioteca WebSocket Gorilla para Go (Golang) — guia completo
Envio de SMS em Java: visão geral de bibliotecas e ferramentas de API