Core Data (CRUD) with Swift 4.2 for Beginners
Core Data is an object graph and persistence framework provided by Apple in the macOS and iOS operating systems. Foi introduzido no Mac OS X 10.4 Tiger e iOS com o iPhone SDK 3.0. Ele permite que dados organizados pelo modelo entidade–atributo relacional sejam serializados em lojas XML, binárias ou SQLite.
Desenvolvedores novos para dados de núcleo são muitas vezes confundidos pelas diferenças entre SQLite e dados de núcleo. Se você se pergunta se você precisa de dados SQLite ou Core, então você está fazendo a pergunta errada. Lembre-se que o núcleo de dados não é uma base de dados.
SQLite:
- ter recursos de restrição de dados.
- opera em dados, armazenados no disco.
- pode Drop table and Edit data without loading them in memory.
- Lento em comparação com os dados de base.
dados de base:
- não tem restrições de dados, se necessário a necessidade de implementar pela lógica de negócios.
- opera na memória.(os dados precisam ser carregados do disco para a memória)
- precisam carregar os dados inteiros se precisamos deixar cair a tabela ou atualizar.
- rápido em termos de criação de recordes.(salvá-los pode ser demorado)
além disso, além do SQLite como back-end de dados do núcleo pode usar XML ou formato binário para armazenar dados para o disco.
limitações dos dados de base
embora os dados de base sejam um quadro fantástico, existem vários inconvenientes. Estas desvantagens estão directamente relacionadas com a natureza do enquadramento e com o seu funcionamento.
os dados do núcleo só podem fazer a sua magia porque mantém o gráfico de objectos que gere na memória. Isso significa que ele só pode operar em registros uma vez que eles estão em memória. Isto é muito diferente de realizar uma consulta SQL em um banco de dados. Se você quiser excluir milhares de registros, Os dados do núcleo primeiro precisa carregar cada registro na memória. Escusado será dizer que isso resulta em problemas de memória e desempenho se feito incorretamente.
outra limitação importante é o modelo de threading de dados de núcleo. O framework espera ser executado em um único fio. Felizmente, os dados de base evoluíram dramaticamente ao longo dos anos e o framework colocou várias soluções em prática para tornar o trabalho com os dados de base em um ambiente multithreaded mais seguro e mais fácil.
For applications that need to manage a complex object graph, Core Data is a great fit. Se você só precisa armazenar um punhado de objetos não relacionados, então você pode estar melhor com uma solução leve ou o sistema de predefinições do Usuário.
Central Data Demo (Create, Retrieve, Update and Delete)
a fim de demonstrar o básico dos dados de Base, vamos criar o aplicativo single view iOS com o módulo de dados de base selecionado.
Primeiro, vamos criar um novo projeto e vamos selecionar “Usar os Dados do Núcleo”. Embora você possa adicionar esse framework para seu projeto existente, é mais fácil adicioná-lo a partir desse lugar, já que tudo será conectado para você.Uma vez que o projeto é criado, você vai ver um arquivo como o Coredatest.xcdatamodeld adicionado.
quando clicar nele, verá uma ferramenta que lhe permite configurar entidades que representam modelos de dados. Você pode definir poucas coisas para cada entidade lá, mas para nós atributos e relacionamentos serão mais importantes.
Agora que nós criamos um projeto de demonstração com Núcleo de Dados de suporte. Há duas mudanças notáveis neste modelo de Xcode que podemos facilmente observar que são
- o novo arquivo CoreDataCRUD.xcdatamodeld
- The AppDelegate.swift arquivo com os Dados do Núcleo Pilha de código
Principais Dados de Pilha
O Núcleo de Dados Pilha de código dentro do AppDelegate.swift tem documentação clara em forma de comentários, mas em resumo, ele configurou o persistentContainer e salvar os dados se houver quaisquer alterações. Como AppDelegate é o primeiro arquivo que executa assim que app lançado, podemos salvar e obter o contexto a partir do núcleo de dados Pilha.
agora que, nós modelamos nossos dados na entidade do Usuário. É hora de adicionar alguns registros e salvá-lo na CoreData
comece com a CoreData importação para o nosso visualizador.swift
Criar Registos centrais de Dados
O processo de adicionar os registros de centrais de Dados tem as seguintes tarefas
- Consulte persistentContainer de appdelegate
- Criar o contexto de persistentContainer
- Criar uma entidade com o Usuário
- Criar novo registro com esta Entidade de Usuário
- Definir valores para os registros para cada chave
Obter Dados
processo de obter os dados salvos é muito fácil também. Ele tem a seguinte tarefa
- Preparar a solicitação do tipo de NSFetchRequest para a entidade do Usuário (no nosso exemplo)
- se necessário, usar predicado para o filtro de dados
- Buscar o resultado de contexto na forma de matriz de
- Iterar através de uma matriz para obter o valor para a chave específica
podemos buscar os dados de nossos clientes entidade usando o seguinte código.
Atualização de Dados
Para atualização de registro, primeiro, temos de buscar/Recuperar dados com o predicado como o mesmo que acima Recuperar dados de processo. Em seguida, abaixo de poucos passos a seguir
- preparar o pedido com predicado para a entidade (usuário em nosso exemplo)
- obter o registro e definir um novo valor com a chave
- e último contexto de gravação mesmo que criar dados.
Excluir Dados
Para excluir o registro, primeiro, temos de encontrar o objeto que queremos eliminar por fetchRequest. em seguida, siga abaixo alguns passos para apagar o registro
- Prepare o pedido com predicado para a entidade (usuário em nosso exemplo)
- buscar o registro e que queremos excluir
- e fazer o contexto.excluir(objeto) chamada (ref imagem anexada abaixo)
well, this isn’t enough to core data, there are many complex things we can do with core data tracking data changes, adding Predicates and complex relationships of databases. À medida que você usa mais dados centrais, as coisas ficam mais complexas.