Core Data para Swift: guia completo com exemplos

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

O que é Core Data e para que serve?

\n\n

Core Data não é uma biblioteca no sentido tradicional (como, por exemplo, Alamofire ou SnapKit), mas sim um poderoso framework da Apple para gerenciar o modelo de dados e garantir a persistência (armazenamento) de dados em aplicativos para iOS, macOS, tvOS e watchOS. Ele está integrado ao SDK e não requer instalação separada através de gerenciadores de pacotes como CocoaPods ou Swift Package Manager.

\n\n

Para que serve o Core Data? No desenvolvimento moderno de aplicativos móveis, quase sempre é necessário armazenar dados localmente: seja uma lista de tarefas, histórico de mensagens, configurações do usuário ou cache de notícias. O Core Data fornece uma pilha completa para isso, que inclui:

\n
    \n
  • Modelo de dados (NSManagedObjectModel) — descrição das entidades, seus atributos e relacionamentos.
  • \n
  • Contexto (NSManagedObjectContext) — um "rascunho" onde você trabalha com os objetos antes de salvá-los.
  • \n
  • Persistent Store Coordinator — a ponte entre o contexto e o armazenamento físico (SQLite, XML, arquivo binário, etc.).
  • \n
  • Persistent Container — um invólucro simplificado (introduzido no iOS 10) que combina todos os componentes.
  • \n
\n\n

Ao contrário do uso simples de SQLite ou UserDefaults, o Core Data gerencia automaticamente o ciclo de vida dos objetos, suporta reversão de alterações, carregamento preguiçoso, cache, validação e até integração com iCloud. Isso o torna uma ferramenta indispensável para qualquer aplicativo sério que trabalhe com dados.

\n\n

Instalação do Core Data

\n\n

O Core Data faz parte dos frameworks de sistema da Apple. Você não precisa executar pip install ou npm install. Para usá-lo, basta importar o framework para o seu projeto.

\n\n

1. Adicionando o framework ao projeto

\n

Ao criar um novo projeto no Xcode, você pode marcar imediatamente a opção "Use Core Data". Se o projeto já existir, adicione o framework manualmente:

\n
    \n
  1. Selecione seu projeto no navegador (Project Navigator).
  2. \n
  3. Vá para a aba "General" do seu alvo de compilação (Target).
  4. \n
  5. Role para baixo até a seção "Frameworks, Libraries, and Embedded Content".
  6. \n
  7. Clique em "+" e selecione CoreData.framework.
  8. \n
\n\n

2. Criando o arquivo de modelo de dados

\n

Você também precisará de um arquivo com a extensão .xcdatamodeld. Geralmente, ele é criado automaticamente ao ativar o Core Data. Se não existir, crie um novo arquivo: File → New → File → Core Data → Data Model.

\n\n

3. Importação no código

\n

Nos arquivos Swift onde você trabalhará com Core Data, adicione:

\n
import CoreData
\n\n

Com isso, a instalação está concluída. O Core Data está pronto para uso.

\n\n

Início rápido: exemplo de código

\n\n

Vamos considerar um exemplo simples: criar uma entidade "User" com os atributos "name" e "age", salvar e ler dados.

\n\n

Passo 1: Criando o modelo de dados

\n

Abra o arquivo .xcdatamodeld. Adicione uma entidade (Entity) com o nome "User". Adicione os atributos: name (tipo String) e age (tipo Int16). Crie uma classe para esta entidade: Editor → Create NSManagedObject Subclass. O Xcode gerará os arquivos User+CoreDataProperties.swift e User+CoreDataClass.swift.

\n\n

Passo 2: Configurando o Persistent Container

\n

No AppDelegate (ou em um gerenciador separado), crie o contêiner:

\n
import CoreData\n\nclass PersistenceController {\n    static let shared = PersistenceController()\n    \n    let container: NSPersistentContainer\n    \n    init() {\n        container = NSPersistentContainer(name: "YourModelName") // Nome do seu arquivo .xcdatamodeld\n        container.loadPersistentStores { (storeDescription, error) in\n            if let error = error as NSError? {\n                fatalError("Unresolved error \\(error), \\(error.userInfo)")\n            }\n        }\n    }\n    \n    var cont                    

Recommendations