• NSPersistentContainer – en mærkelig klasse med alle funktionerne til at arbejde med kernedata kaldet Core Data stack.
  • Nsmanagedobjectkontekst – plads til at generere, gemme og hente data.Udfør operationer fra dette objekt. Der er en ejendom kaldet visningskontekst inde i nspersitentcontainer, så du behøver ikke at lave det selv.
  • Nsfetchanmodning – det objekt, du skal oprette for at få dataene.
  • NSEntityDescription-EntityEntity Hr.Enheden i filen.
  • DataController-en brugerdefineret klasse til at håndtere ovenstående together.It vil blive forklaret nedenfor.

(til reference) klasser, der skal røres før iOS 10

  • NSPersistentStoreCoordinator – en person, der har et lager (kaldet Persistent store) til at gemme data og den administrerede Objektkontekst, der er nævnt ovenfor.
  • NSPersistentStoreCoordinator – en person, der har et lager (kaldet Persistent store) til at gemme data og den administrerede Objektkontekst, der er nævnt ovenfor.
  • NSPersistentStoreCoordinator – en person, der har et lager (kaldet Persistent store) til at gemme data og den administrerede Objektkontekst, der er nævnt ovenfor.
  • NSPersistentStoreCoordinator – en person, der har et lager (kaldet Persistent store) til at gemme data og den administrerede Objektkontekst, der er nævnt ovenfor.
  • NSManagedObjectModel – en klasse, der administrerer et sæt enheder.
  • politik

    Jeg tror, det ville være lettere at håndtere, hvis du opretter en klasse kaldet

    DataController og gør det hele komplet i det.
    Hvis du markerer “Brug kernedata”, når du opretter et nyt projekt, appdelegate.I hurtig tilføjes Kernedatarelateret kode, men den skal få adgang til AppDelegate en efter en, og den er forvirrende blandet med den originale kode for AppDelegate, så det er skrevet i dokumentet, at det er bedre at sætte det sammen i en klasse (Se her)

    initialisering

    initialisering af Datakontrollerklassen

    initialisering af Datakontrollerklassen

    Datacontroller class initialisering

    datacontroller class initialisering

    datacontroller class initialisering nitialiseringen ser sådan ud:"DataModel" er forskellig for hvert projekt, så skift det i overensstemmelse hermed.Specielt udvidelsen .xcdatamodeld.

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

    Dette er timingen til at generere Datakontroller, men jeg vil prøve i begyndelsen af AppDelegate for nu.

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

    Opret og gem administreret objekt

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

    underklasser NSManagedObject

    underklasser tillader direkte adgang til egenskaber (attributter).
    I Kode 9 oprettes det automatisk, når du tilføjer enhed, så du behøver muligvis ikke at skrive det selv, medmindre du foretager særlig behandling.

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

    Gem nsmanagedobject instance

    Datakontroller.hurtig
    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)") } }}

    Indlæs nsmanagedobject instance

    Opret nsfetchanmodningsobjekt og indstil kontekst.Bare ring hente ().

    Datakontroller.hurtig
    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 }

    filtrering af resultatet

    let employeesFetch = ... tilføj det efter dette for at få det filtrerede resultat.

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

    ud over at indsnævre resultatet kan du også angive at returnere en ordbog i stedet for NSManagedObject.Du kan også angive, at ordbogen kun indeholder bestemte egenskaber for enheden.

    oprettelse og ændring af brugerdefinerede administrerede objekter

    i Kode 8, iOS 10 og nyere, Når du opretter en Kernedatamodel i kode, genereres en underklasse eller udvidelse af NSManagedObject automatisk.Disse filer er ikke inkluderet i projektet og oprettes på byggetid (se her).

    Codegen_2h.png

    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret.