• Contenedor permanente: Una clase extraña con todas las funciones para trabajar con Datos centrales llamada Pila de datos centrales.
  • NSManagedObjectContext – espacio para generar, almacenar y recuperar datos.Realice operaciones desde este objeto. Hay una propiedad llamada ViewContext dentro de nspersisitentcontainer, por lo que no tiene que hacerla usted mismo.
  • NSFetchRequest – El objeto que necesita crear para obtener los datos.
  • NSEntityDescription – Entityの詳細を表すクラス。entity、、*.La Entidad en el archivo xcdatamodeld.
  • Controlador de datos – Una clase personalizada para manejar lo anterior together.It se explicará a continuación.

(para referencia) Clases que deben tocarse antes de iOS 10

  • NSPersistentStoreCoordinator: una persona que tiene un almacenamiento (llamado Almacén persistente) para almacenar datos y el Contexto de Objeto administrado mencionado anteriormente.
  • NSPersistentStoreCoordinator: Una persona que tiene un almacenamiento (llamado Almacén persistente) para almacenar datos y el Contexto de Objeto Administrado mencionado anteriormente.
  • NSPersistentStoreCoordinator: una persona que tiene un almacenamiento (llamado Almacén persistente) para almacenar datos y el Contexto de Objeto Administrado mencionado anteriormente.
  • NSPersistentStoreCoordinator: una persona que tiene un almacenamiento (llamado Almacén persistente) para almacenar datos y el Contexto de Objeto Administrado mencionado anteriormente.
  • NSManagedObjectModel – Una clase que gestiona un conjunto de Entidades.
  • política

    Creo que sería más fácil de manejar si crea una clase llamada

    DataController y la completa en ella.
    Si marca «Usar datos centrales» al crear un nuevo proyecto, AppDelegate.En swift, se agrega código relacionado con el núcleo de datos, pero tiene que acceder a AppDelegate uno por uno, y es confuso mezclado con el código original de AppDelegate, por lo que está escrito en el documento que es mejor juntarlo en una clase (consulte aquí)

    inicialización

    Inicialización de clase de controlador de datos

    Inicialización de clase de controlador de datos

    Inicialización de clase de controlador de datos

    Inicialización de clase de controlador de datos

    Inicialización de clase de controlador de datos

    Inicialización de clase de controlador de datos

    Inicialización de clase de controlador de datosa inicialización se ve así: "DataModel" es diferente para cada proyecto, así que cámbielo en consecuencia.En concreto, la extensión .xcdatamodeld.

    Controlador de datos.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 es el momento para generar el controlador de datos, pero lo intentaré al principio de AppDelegate por ahora.

    AppDelegate.swift
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: ?) -> Bool { dataController = DataController() { // なんかしたいことあれば } //... return true}

    Crear y guardar objetos Administrados

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

    crear subclases de NSManagedObject

    Subclases permiten el acceso directo a las propiedades (atributos).
    En Xcode 9, se crea automáticamente cuando agrega Entidad, por lo que es posible que no tenga que escribirla usted mismo a menos que realice un procesamiento especial.

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

    Guardar NSManagedObject ejemplo

    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)") } }}

    cargar instancia NSManagedObject

    Crear objeto NSFetchRequest y establecer contexto.Solo tienes que llamar a fetch ().

    Controlador de datos.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 }

    filtrado el resultado

    let employeesFetch = ... Agregar que después de esto para obtener el filtrado de resultados.

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

    además de reducir por el resultado, también puede especificar para devolver un Diccionario en lugar de NSManagedObject.También puede especificar que el Diccionario contenga solo ciertas propiedades de la Entidad.

    Creación y modificación de objetos administrados personalizados

    En Xcode 8, iOS 10 y versiones posteriores, al crear un modelo de datos básicos en Xcode, se genera automáticamente una subclase o extensión de NSManagedObject.Estos archivos no están incluidos en el proyecto y se crean en el momento de la compilación (ver aquí).

    CodeGen_2x.png

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada.