• NSPersistentContainer – outo luokka, jossa on kaikki ydintietojen kanssa työskentelyyn tarvittavat ominaisuudet, joita kutsutaan nimellä Core Data stack.
  • NSManagedObjectContext – space tietojen tuottamiseen, tallentamiseen ja hakemiseen.Suorita toiminnot tästä objektista. Nspersisitentcontainerin sisällä on ominaisuus nimeltä viewContext, joten sinun ei tarvitse tehdä sitä itse.
  • NSFetchRequest – objekti, joka sinun täytyy luoda saadaksesi tiedot.
  • NSEntityDescription-Entityoechnicスラー。Entoyは pursot*.Xcdatamodeld-tiedostossa oleva yksikkö.
  • DataController – a custom class to handle the above together.It selitetään alla.

(viitteellisiä) luokkia, joihin on koskettava ennen iOS 10: ää

  • NSPersistentStoreCoordinator – henkilö, jolla on tallennustila (nimeltään Persistent store) tietojen ja yllä mainitun hallitun Objektiyhteyden tallentamiseksi.
  • NSPersistentStoreCoordinator-henkilö, jolla on tallennustila (nimeltään Persistent store) tietojen ja yllä mainitun hallitun Objektiyhteyden tallentamiseen.
  • NSPersistentStoreCoordinator-henkilö, jolla on tallennustila (nimeltään Persistent store) tietojen ja yllä mainitun hallitun Objektiyhteyden tallentamiseen.
  • NSPersistentStoreCoordinator – henkilö, jolla on tallennustila (nimeltään Persistent store) tietojen ja yllä mainitun hallitun Objektiyhteyden tallentamiseen.
  • NSManagedObjectModel – luokka, joka hallinnoi kokonaisuutta.
  • politiikka

    Luulen, että se olisi helpompi hoitaa, jos luot

    DataController-nimisen luokan ja teet kaiken valmiiksi siinä.
    Jos valitset ”Käytä Ydintietoa” luodessasi uutta projektia, AppDelegate.Swiftissä lisätään Ydintietoihin liittyvä koodi, mutta sen on päästävä Appdelegateen yksi kerrallaan, ja se on sekava sekoitettuna Appdelegaten alkuperäiseen koodiin, joten dokumentissa kirjoitetaan, että se on parempi koota luokkaan (Katso tästä)

    alustus

    DataController-luokan alustus

    DataController-luokan alustus

    DataController-luokan alustus

    DataController-luokan alustus

    DataController-luokan alustus

    DataController-luokan alustus

    DataController-luokan alustus

    DataController-luokan alustus

    DataController-luokan alustus

    DataController-luokan alustus

    > datacontroller class initialization

    Datacontroller class initialization

    datacontroller class initialization nitialization näyttää tältä: "DataModel" on erilainen jokaiselle projektille, joten muuta sitä vastaavasti.Erityisesti laajennus .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() } } // 以下もっと追加していくよー}

    Tämä on ajankohta luoda DataController, mutta yritän Appdelegaten alussa toistaiseksi.

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

    luo ja tallenna hallittu objekti

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

    NSManagedObject

    alaluokat mahdollistavat suoran pääsyn ominaisuuksiin (attribuutteihin).
    Xcode 9: ssä se syntyy automaattisesti, kun lisäät entiteetin, joten sinun ei välttämättä tarvitse kirjoittaa sitä itse, ellet tee erikoiskäsittelyä.

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

    Tallenna NSManagedObject-ilmentymä

    Datakontroller.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.Soita vain nouto ().

    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 }

    suodatus tuloksen

    let employeesFetch = ...lisää se tämän jälkeen, jotta saadaan suodatettu tulos.

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

    tuloksen kaventamisen lisäksi voit määrittää myös sanakirjan palauttamisen NSManagedObject-kohteen sijaan.Voit myös määrittää, että sanakirjassa on vain tiettyjä olion ominaisuuksia.

    muokattujen hallittujen objektien luominen ja muokkaaminen

    Xcode 8: ssa, iOS 10: ssä ja uudemmissa versioissa, kun luot Ydintietomallin Xcode: ssä, NSManagedObject: n alaluokka tai laajennus syntyy automaattisesti.Nämä tiedostot eivät sisälly projektiin ja ne luodaan rakennusaikana (Katso tästä).

    CodeGen_2x. png

    Vastaa

    Sähköpostiosoitettasi ei julkaista.