• NSPersistentContainer-egy furcsa osztály, amely az alapadatok kezeléséhez szükséges összes funkcióval rendelkezik, az úgynevezett Core Data stack.
  • NSManagedObjectContext – az adatok generálására, tárolására és lekérésére szolgáló hely.Végezzen műveleteket ebből az objektumból. Van egy viewContext nevű tulajdonság az nspersisitentcontainer belsejében, így nem kell magának elkészítenie.
  • NSFetchRequest – az objektum, amelyet létre kell hoznia az adatok megszerzéséhez.
  • NSEntityDescription-Entity ++ Entity (entity).Az Xcdatamodeld fájlban lévő entitás.
  • DataController-egyéni osztály a fentiek kezelésére together.It az alábbiakban ismertetjük.

(referenciaként) osztályok, amelyeket meg kell érinteni az iOS 10 előtt

  • NSPersistentStoreCoordinator – olyan személy, aki rendelkezik tárolóval (állandó tárolóval) az adatok és a fent említett felügyelt objektum környezet tárolására.
  • NSPersistentStoreCoordinator-olyan személy, aki rendelkezik tárolóval (úgynevezett állandó tárolóval) az adatok és a fent említett felügyelt objektum környezet tárolására.
  • NSPersistentStoreCoordinator-olyan személy, aki rendelkezik tárolóval (úgynevezett állandó tárolóval) az adatok és a fent említett felügyelt objektum környezet tárolására.
  • NSPersistentStoreCoordinator – olyan személy, aki rendelkezik tárolóval (úgynevezett állandó tárolóval) az adatok és a fent említett felügyelt objektum környezet tárolására.
  • NSManagedObjectModel – egy osztály, amely kezeli egy sor entitások.
  • politika

    Úgy gondolom, hogy könnyebb lenne kezelni, ha létrehoznánk egy

    DataController nevű osztályt, és mindezt teljessé tennénk benne.
    Ha új projekt létrehozásakor bejelöli az “alapadatok használata” jelölőnégyzetet, az AppDelegate.A swift-ben az alapadatokkal kapcsolatos kód kerül hozzáadásra, de egyesével hozzá kell férnie az AppDelegate-hez, és összekeveredik az AppDelegate eredeti kódjával, ezért a dokumentumban meg van írva, hogy jobb egy osztályba rakni (lásd itt)

    inicializálás

    DataController osztály inicializálás

    DataController osztály inicializálás

    DataController osztály inicializálás

    DataController osztály inicializálás

    DataController osztály inicializálás

    DataController osztály inicializálás

    DataController osztály inicializálás

    DataController osztály inicializálás

    Datacontroller osztály inicializálás

    Datacontroller osztály inicializálás

    Datacontroller osztály inicializálás z inicializálás így néz ki: "DataModel" az egyes projekteknél eltérő, ezért ennek megfelelően változtassa meg.Pontosabban a .xcdatamodeldfájlnévből származik.

    Adatkontroller.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() } } // 以下もっと追加していくよー}

    Ez az időzítés, hogy létrehoz DataController, de megpróbálom elején AppDelegate most.

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

    felügyelt objektum létrehozása és mentése

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

    alosztályok NSManagedObject

    az alosztályok közvetlen hozzáférést biztosítanak a tulajdonságokhoz (attribútumokhoz).
    az Xcode 9-ben automatikusan létrejön, amikor entitást ad hozzá, így előfordulhat, hogy nem kell saját magának írnia, hacsak nem végez speciális feldolgozást.

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

    az NSManagedObject példány mentése

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

    töltse be az NSManagedObject példányt

    Hozzon létre NSFetchRequest objektumot és állítsa be a kontextust.Csak hívja fetch().

    Adatkontroller.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 }

    az eredmény szűrése

    let employeesFetch = ... ezt követően adja hozzá a szűrt eredmény eléréséhez.

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

    az eredmény szűkítése mellett megadhatja, hogy az NSManagedObject helyett egy szótárt adjon vissza.Azt is megadhatja, hogy a szótár csak az entitás bizonyos tulajdonságait tartalmazza.

    egyéni felügyelt objektumok létrehozása és módosítása

    az Xcode 8, iOS 10 és újabb verzióiban, amikor Alapadatmodellt hoz létre az Xcode-ban, az NSManagedObject alosztálya vagy kiterjesztése automatikusan létrejön.Ezek a fájlok nem szerepelnek a projektben, és a készítéskor jönnek létre (lásd itt).

    CodeGen_2x. png

    Vélemény, hozzászólás?

    Az e-mail-címet nem tesszük közzé.