Pilha do Core Data: configuração de NSPersistentContainer
Configure o container persistente, o contexto e o coordinator em um aplicativo SwiftUI.
Pilha do Core Data: configuração de NSPersistentContainer é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
Visão geral do Core Data
Core Data é a estrutura de grafo de objetos e persistência da Apple. Ela gerencia o SQLite (ou outros armazenamentos) por meio de uma API orientada a objetos.
import CoreData
// Key classes: NSPersistentContainer, NSManagedObjectContext
// NSManagedObject, NSFetchRequestCriando um NSPersistentContainer
Inicialize NSPersistentContainer com o nome do seu modelo .xcdatamodeld e carregue os armazenamentos persistentes.
let container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { desc, error in
if let error { fatalError("Core Data failed: \(error)") }
}O padrão do Persistence Controller
Envolva o contêiner em uma estrutura PersistenceController singleton (ou injetável) para obter acesso organizado em todo o app.
struct PersistenceController {
static let shared = PersistenceController()
let container: NSPersistentContainer
init() {
container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { _, error in
if let error { fatalError("\(error)") }
}
}
}viewContext e backgroundContext
viewContext é o contexto da linha de execução principal para a interface. Use newBackgroundContext() para operações pesadas.
let viewCtx = PersistenceController.shared.container.viewContext
let bgCtx = PersistenceController.shared.container.newBackgroundContext()Criando objetos gerenciados
Insira novos objetos usando NSEntityDescription.insertNewObject ou o inicializador da classe gerada.
let item = Item(context: viewCtx)
item.timestamp = Date()
try? viewCtx.save()Buscando objetos
Use NSFetchRequest para consultar objetos do Core Data com predicados e descritores de ordenação.
let request: NSFetchRequest<Item> = Item.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: false)]
let items = try? viewCtx.fetch(request)Salvando o contexto
Sempre chame context.save() para persistir as alterações. Envolva a operação em um tratamento do-catch no código de produção.
do {
try viewCtx.save()
} catch {
print("Save failed: \(error)")
viewCtx.rollback()
}Integração com SwiftUI usando @FetchRequest
Use @FetchRequest nas visualizações SwiftUI para atualizar automaticamente a interface quando o Core Data mudar.
struct ItemList: View {
@FetchRequest(
sortDescriptors: [SortDescriptor(\Item.timestamp, order: .reverse)]
) var items: FetchedResults<Item>
var body: some View {
List(items) { Text($0.timestamp!.formatted()) }
}
}Injetando viewContext no SwiftUI
Passe viewContext pelo ambiente do SwiftUI para que as visualizações possam ler e gravar dados no Core Data.
@main
struct MyApp: App {
let persistence = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistence.container.viewContext)
}
}
}Excluindo objetos
Chame context.delete(object) e depois salve para remover permanentemente um objeto.
viewCtx.delete(item)
try? viewCtx.save()Armazenamento em memória para testes
Use um armazenamento em memória para evitar acessar o disco durante os testes unitários.
let desc = NSPersistentStoreDescription()
desc.type = NSInMemoryStoreType
container.persistentStoreDescriptions = [desc]
container.loadPersistentStores { _, _ in }Verificação rápida
Qual contexto de NSPersistentContainer deve ser usado para leituras e gravações do Core Data orientadas pela interface?
Recapitulação da lição
Configure o Core Data com NSPersistentContainer, carregue os armazenamentos e envolva tudo em um PersistenceController. Use viewContext na linha de execução principal e newBackgroundContext() para tarefas pesadas. Integre-o ao SwiftUI por meio de @FetchRequest e da chave de ambiente do contexto de objetos gerenciados.
Perguntas Frequentes
A aula “Pilha do Core Data: configuração de NSPersistentContainer” é grátis?
Sim — o texto completo de “Pilha do Core Data: configuração de NSPersistentContainer” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Pilha do Core Data: configuração de NSPersistentContainer”?
Configure o container persistente, o contexto e o coordinator em um aplicativo SwiftUI. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Pilha do Core Data: configuração de NSPersistentContainer”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Pilha do Core Data: configuração de NSPersistentContainer
- SwiftData @Model e ModelContext
- Relacionamentos e Fetch Descriptors
- Migrações leves e sincronização com CloudKit