• NSPersistentContainer – Une classe étrange avec toutes les fonctionnalités pour travailler avec des données de base appelées pile de données de base.
  • NSManagedObjectContext – espace pour générer, stocker et récupérer des données.Effectuez des opérations à partir de cet objet. Il existe une propriété appelée viewContext dans nspersisitentcontainer, vous n’avez donc pas à la créer vous-même.
  • NSFetchRequest – L’objet que vous devez créer pour obtenir les données.
  • Description de l’identité – Entityのククラス。Entity、、*.L’entité dans le fichier xcdatamodeld.
  • DataController – Une classe personnalisée pour gérer ce qui précède together.It sera expliqué ci-dessous.

(pour référence) Classes qui doivent être touchées avant iOS 10

  • NSPersistentStoreCoordinator – une personne qui dispose d’un stockage (appelé magasin Persistant) pour stocker les données et le contexte d’objet géré mentionné ci-dessus.
  • NSPersistentStoreCoordinator – Une personne qui dispose d’un stockage (appelé magasin Persistant) pour stocker les données et le contexte d’objet géré mentionné ci-dessus.
  • NSPersistentStoreCoordinator – une personne qui dispose d’un stockage (appelé magasin Persistant) pour stocker les données et le contexte d’objet géré mentionné ci-dessus.
  • NSPersistentStoreCoordinator – une personne qui dispose d’un stockage (appelé magasin Persistant) pour stocker les données et le contexte d’objet géré mentionné ci-dessus.
  • NSManagedObjectModel – Une classe qui gère un ensemble d’entités.
  • politique

    Je pense que ce serait plus facile à gérer si vous créez une classe appelée

    DataController et que vous la complétez.
    Si vous cochez « Utiliser les données de base » lors de la création d’un nouveau projet, AppDelegate.Dans swift, le code lié aux données de base est ajouté, mais il doit accéder à AppDelegate un par un, et il est confondu avec le code d’origine d’AppDelegate, il est donc écrit dans le document qu’il est préférable de le regrouper dans une classe (voir ici)

    initialisation

    Initialisation de la classe DataController

    initialisation de la classe DataController

    initialisation de la classe DataController

    Initialisation de la classe DataController

    Initialisation de la classe DataController

    initialisation de la classe DataController ‘initialisation ressemble à ceci: "DataModel" est différente pour chaque projet, alors modifiez-la en conséquence.Plus précisément, l’extension .xcdatamodeld.

    Contrôleur de données.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() } } // 以下もっと追加していくよー}

    C’est le timing pour générer DataController, mais je vais essayer au début d’AppDelegate pour l’instant.

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

    Créer et enregistrer un objet géré

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

    sous-classe NSManagedObject

    Les sous-classes permettent un accès direct aux propriétés (attributs).
    Dans Xcode 9, il est automatiquement créé lorsque vous ajoutez une entité, vous n’aurez donc peut-être pas à l’écrire vous-même à moins de faire un traitement spécial.

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

    Enregistrer l’instance NSManagedObject

    Contrôleur de données.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)") } }}

    charge l’instance NSManagedObject

    Crée l’objet NSFetchRequest et définit le contexte.Appelez simplement fetch().

    Contrôleur de données.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 }

    filtrage du résultat

    let employeesFetch = ... Ajoutez-le après cela pour obtenir le résultat filtré.

    Contrôleur de données.swift
    let firstName = "Trevor"employeesFetch.predicate = NSPredicate(format: "firstName == %@", firstName)

    En plus de réduire le résultat, vous pouvez également spécifier de renvoyer un dictionnaire au lieu de NSManagedObject.Vous pouvez également spécifier que le Dictionnaire ne contient que certaines propriétés de l’Entité.

    Création et modification d’objets gérés personnalisés

    Dans Xcode 8, iOS 10 et versions ultérieures, lorsque vous créez un modèle de données de base dans Xcode, une sous-classe ou une extension de NSManagedObject est automatiquement générée.Ces fichiers ne sont pas inclus dans le projet et sont créés au moment de la construction (voir ici).

    CodeGen_2x.png

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée.