• NSPersistentContainer – Uma estranha classe com todos os recursos para trabalhar com os Dados do Núcleo chamado de Núcleo de Dados pilha.
  • NSManagedObjectContext-espaço para gerar, armazenar e recuperar dados.Efectuar operações a partir deste objecto. Há uma propriedade chamada viewContext dentro do nspersisitentcontainer, então você não tem que fazê-la você mesmo.
  • NSFetchRequest-o objeto que você precisa criar para obter os dados.
  • NSEntityDescription – Entityのララス.Entityは、*.A entidade no ficheiro xcdatamodeld.
  • DataController-uma classe personalizada para lidar com o acima together.It será explicado abaixo.

(para referência) Classes que precisam ser tocado antes de iOS 10

  • NSPersistentStoreCoordinator – uma pessoa que tenha um armazenamento (chamado de armazenamento Persistente) para armazenamento de dados e o Objeto Gerenciado Contexto mencionado acima.
  • NSPersistentStoreCoordinator-uma pessoa que tem um armazenamento (chamado armazenamento persistente) para armazenar dados e o contexto de objeto gerenciado mencionado acima.
  • NSPersistentStoreCoordinator-uma pessoa que tem um armazenamento (chamado armazenamento persistente) para armazenar dados e o contexto de objeto gerenciado mencionado acima.
  • NSPersistentStoreCoordinator-uma pessoa que tem um armazenamento (chamado armazenamento persistente) para armazenar dados e o contexto de objeto gerenciado mencionado acima.
  • NSManagedObjectModel – uma classe que gere um conjunto de entidades.
  • Política

    Eu acho que seria mais fácil de lidar se você criar uma classe chamada DataController

    e torná-lo completo nele.
    If you check “Use Core Data” when creating a new project, AppDelegate.Na swift, Núcleo relacionadas a Dados de código é adicionado, mas ele tem acesso AppDelegate um por um, e é confuso, misturado com o código original do AppDelegate, assim também está escrito no documento que é melhor para colocá-lo juntos em uma classe (veja aqui)

    inicialização

    DataController de inicialização de classe

    DataController de inicialização de classe

    DataController de inicialização de classe

    DataController de inicialização de classe

    DataController de inicialização de classe

    DataController de inicialização de classe inicialização parecido com este:"DataModel" é diferente para cada projecto, de modo a alterá-lo de acordo.Especificamente, a extensão .xcdatamodeld.

    DataController.swift
    import UIKitimport CoreDataclass DataController: NSObject { var persistentContainer: NSPersistentContainer! init(completionClosure: @escaping () -> ()) { persistentContainer = NSPersistentContainer(name: "DataModel") persistentContainer.loadPersistentStores() { (description, error) in if let error = error { fatalError("Failed to load Core Data stack: \(error)") } completionClosure() } } // 以下もっと追加していくよー}

    Este é o momento para gerar o DataController, mas vou tentar no início do AppDelegate por agora.

    AppDelegate.swift

    Create and save Managed object

    DataController.swift
    func createEmployee() -> EmployeeMO { let context = persistentContainer.viewContext let employee = NSEntityDescription.insertNewObject(forEntityName: "Employee", into: context) as! EmployeeMO return employee}

    subclassing NSManagedObject

    Subclasses permitem o acesso directo às propriedades (atributos).
    no Xcode 9, Ele é criado automaticamente quando você adiciona entidade, então você pode não ter que escrevê-lo você mesmo a menos que você faça processamento especial.

    class EmployeeMO: NSManagedObject { @NSManaged var name: String?}

    Salvar NSManagedObject exemplo

    DataController.swift
    func saveContext() { let context = persistentContainer.viewContext if context.hasChanges { do { try context.save() } catch { // Replace this implementation with code to handle the error appropriately. // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. let nserror = error as NSError fatalError("Unresolved error \(nserror), \(nserror.userInfo)") } }}

    load NSManagedObject instance

    Create NSFetchRequest object and set context.Liga para o fetch.

    DataController.swift
    func fetchEmployees() -> { let context = persistentContainer.viewContext let employeesFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Employee") do { let fetchedEmployees = try context.fetch(employeesFetch) as! return fetchedEmployees } catch { fatalError("Failed to fetch employees: \(error)") } return }

    filtrar o resultado

    let employeesFetch = ... Adicionar após isso para obter o resultado filtrado.

    DataController.swift
    let firstName = "Trevor"employeesFetch.predicate = NSPredicate(format: "firstName == %@", firstName)

    além de estreitar o resultado, você também pode especificar para retornar um Dicionário em vez de NSManagedObject.Você também pode especificar que o dicionário contém apenas certas propriedades da entidade.

    criando e modificando objetos gerenciados personalizados

    no Xcode 8, iOS 10 e mais tarde, quando você cria um modelo de dados de base no Xcode, uma subclasse ou extensão do NSManagedObject é gerado automaticamente.Estes arquivos não estão incluídos no projeto e são criados no tempo de construção (veja aqui).

    CodeGen_2x.png

    Deixe uma resposta

    O seu endereço de email não será publicado.