La persistència de dades és un aspecte fonamental en el desenvolupament d'aplicacions, ja que permet emmagatzemar informació de manera permanent. En aquest tema, aprendrem com utilitzar Core Data per gestionar la persistència de dades en les nostres aplicacions iOS.

Objectius del Tema

  • Entendre què és Core Data i per què és útil.
  • Aprendre a configurar Core Data en un projecte Xcode.
  • Crear models de dades i gestionar les entitats.
  • Guardar, recuperar i eliminar dades utilitzant Core Data.

Què és Core Data?

Core Data és un framework d'Apple que proporciona una solució robusta per gestionar models d'objectes i persistència de dades. És molt més que una simple base de dades, ja que també ofereix funcionalitats com la gestió de gràfics d'objectes, la validació de dades i la migració de dades.

Avantatges de Core Data

  • Gestió Automàtica de la Persistència: Core Data s'encarrega de la major part del treball relacionat amb la persistència de dades.
  • Optimització del Rendiment: Core Data està optimitzat per a un rendiment eficient, especialment en aplicacions amb grans volums de dades.
  • Integració amb l'Entorn de Desenvolupament: Core Data està ben integrat amb Xcode, facilitant la creació i gestió de models de dades.

Configurant Core Data en un Projecte Xcode

Passos per Configurar Core Data

  1. Crear un Nou Projecte Xcode:

    • Obre Xcode i crea un nou projecte seleccionant "App" sota la secció "iOS".
    • Assegura't de marcar l'opció "Use Core Data" durant la configuració del projecte.
  2. Entendre els Fitxers Generats:

    • Model de Dades (.xcdatamodeld): Aquest fitxer conté la definició del model de dades, incloent les entitats, atributs i relacions.
    • Persistent Container: Aquest és l'objecte principal que gestiona el context de dades i la coordinació de la persistència.

Exemple de Configuració

import CoreData

class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    lazy var persistentContainer: NSPersistentContainer = {
        let container = NSPersistentContainer(name: "ModelName")
        container.loadPersistentStores { (storeDescription, error) in
            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        }
        return container
    }()
    
    func saveContext() {
        let context = persistentContainer.viewContext
        if context.hasChanges {
            do {
                try context.save()
            } catch {
                let nserror = error as NSError
                fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
            }
        }
    }
}

Creant Models de Dades

Definint Entitats i Atributs

  • Entitat: Representa una classe d'objectes en el model de dades.
  • Atribut: Representa una propietat d'una entitat.

Exemple de Creació d'Entitat

  1. Obre el fitxer .xcdatamodeld en Xcode.
  2. Afegeix una nova entitat, per exemple, "Person".
  3. Afegeix atributs a l'entitat, com ara "name" (String) i "age" (Integer).

Guardar, Recuperar i Eliminar Dades

Guardar Dades

func savePerson(name: String, age: Int16) {
    let context = persistentContainer.viewContext
    let person = Person(context: context)
    person.name = name
    person.age = age
    
    do {
        try context.save()
    } catch {
        print("Failed to save person: \(error)")
    }
}

Recuperar Dades

func fetchPeople() -> [Person] {
    let context = persistentContainer.viewContext
    let fetchRequest: NSFetchRequest<Person> = Person.fetchRequest()
    
    do {
        let people = try context.fetch(fetchRequest)
        return people
    } catch {
        print("Failed to fetch people: \(error)")
        return []
    }
}

Eliminar Dades

func deletePerson(person: Person) {
    let context = persistentContainer.viewContext
    context.delete(person)
    
    do {
        try context.save()
    } catch {
        print("Failed to delete person: \(error)")
    }
}

Exercicis Pràctics

Exercici 1: Crear i Guardar una Entitat

  1. Crea una nova entitat anomenada "Book" amb els atributs "title" (String) i "author" (String).
  2. Escriu una funció per guardar un llibre en Core Data.

Exercici 2: Recuperar i Mostrar Dades

  1. Escriu una funció per recuperar tots els llibres guardats.
  2. Mostra els llibres en una taula.

Exercici 3: Eliminar una Entitat

  1. Escriu una funció per eliminar un llibre específic.
  2. Actualitza la taula després d'eliminar el llibre.

Solucions als Exercicis

Solució Exercici 1

func saveBook(title: String, author: String) {
    let context = persistentContainer.viewContext
    let book = Book(context: context)
    book.title = title
    book.author = author
    
    do {
        try context.save()
    } catch {
        print("Failed to save book: \(error)")
    }
}

Solució Exercici 2

func fetchBooks() -> [Book] {
    let context = persistentContainer.viewContext
    let fetchRequest: NSFetchRequest<Book> = Book.fetchRequest()
    
    do {
        let books = try context.fetch(fetchRequest)
        return books
    } catch {
        print("Failed to fetch books: \(error)")
        return []
    }
}

Solució Exercici 3

func deleteBook(book: Book) {
    let context = persistentContainer.viewContext
    context.delete(book)
    
    do {
        try context.save()
    } catch {
        print("Failed to delete book: \(error)")
    }
}

Conclusió

En aquest tema, hem après com configurar Core Data en un projecte Xcode, crear models de dades, i gestionar la persistència de dades mitjançant la creació, recuperació i eliminació d'entitats. La persistència de dades és una habilitat essencial per a qualsevol desenvolupador d'aplicacions, i Core Data proporciona una eina poderosa i flexible per gestionar-la. En el proper tema, explorarem com treballar amb xarxes i APIs per recuperar dades externes i integrar-les en les nostres aplicacions.

© Copyright 2024. Tots els drets reservats