• NSPersistentContainer – zvláštní třídy se všemi funkcemi pro práci s Core Data tzv. Core Data stack.
  • NSManagedObjectContext-prostor pro generování, ukládání a načítání dat.Proveďte operace z tohoto objektu. Uvnitř nspersisitentcontainer je vlastnost zvaná viewContext, takže ji nemusíte dělat sami.
  • NSFetchRequest-objekt, který musíte vytvořit, abyste získali data.
  • NSEntityDescription-entityEntity.Entita v souboru xcdatamodeld.
  • DataController-vlastní třída zvládnout výše uvedené together.It bude vysvětleno níže.

(pro referenční) Tříd, které potřebují, aby se dotkl dříve, než iOS 10

  • NSPersistentStoreCoordinator – osoba, která má úložiště (tzv Perzistentní úložiště) pro ukládání dat a Managed Object Souvislosti zmínil výše.
  • NSPersistentStoreCoordinator – osoba, která má úložiště (tzv Perzistentní úložiště) pro ukládání dat a Managed Object Souvislosti zmínil výše.
  • NSPersistentStoreCoordinator – osoba, která má úložiště (tzv Perzistentní úložiště) pro ukládání dat a Managed Object Souvislosti zmínil výše.
  • NSPersistentStoreCoordinator – osoba, která má úložiště (tzv Perzistentní úložiště) pro ukládání dat a Managed Object Souvislosti zmínil výše.
  • nsmanagedobjectmodel-třída, která spravuje sadu entit.
  • zásady

    Myslím, že by bylo snazší zvládnout, pokud vytvoříte třídu s názvem

    DataController a vše v ní dokončíte.
    Pokud při vytváření nového projektu zaškrtnete „použít základní Data“, AppDelegate.V swift, Základní Údaje týkající se kódu je přidáno, ale má přístup k AppDelegate jeden po druhém, a to je matoucí smíšené s původním kódu AppDelegate, tak to je napsáno v dokumentu, že je lepší dát je spolu do třídy (viz zde)

    inicializace

    DataController třídy inicializace

    DataController třídy inicializace

    DataController třídy inicializace

    DataController třídy inicializace

    DataController třídy inicializace

    DataController třídy inicializacenicializace vypadá takto:"DataModel" je různé pro každý projekt, takže odpovídajícím způsobem změnit.Konkrétně rozšíření .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() } } // 以下もっと追加していくよー}

    Toto je načasování generovat DataController, ale budu se snažit na začátku AppDelegate pro teď.

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

    vytvořit a uložit spravovaný objekt

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

    podtřídy NSManagedObject

    umožňují přímý přístup k vlastnostem (atributům).
    v Xcode 9 se automaticky vytvoří, když přidáte entitu, takže ji možná nebudete muset psát sami, pokud neprovedete speciální zpracování.

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

    Uložit instanci NSManagedObject

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

    načíst instanci NSManagedObject

    vytvořit objekt NSFetchRequest a nastavit kontext.Stačí zavolat 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 }

    filtrování výsledek

    let employeesFetch = ... Přidat po tomto, aby se filtrovaný výsledek.

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

    kromě zúžení výsledku můžete také zadat návrat slovníku místo NSManagedObject.Můžete také určit, že slovník obsahuje pouze určité vlastnosti Entity.

    Vytváření a úpravy vlastních Řízených objektů

    V Xcode 8, iOS 10 a později, když si vytvořit Základní Datový Model v Xcode, podtřídy nebo rozšíření NSManagedObject je generován automaticky.Tyto soubory nejsou zahrnuty v projektu a jsou vytvořeny v době sestavení (viz zde).

    CodeGen_2x. png

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna.