En aquest tema, aprendrem com recuperar dades d'una base de dades i mostrar-les en la nostra aplicació utilitzant Xcode. Ens centrarem en l'ús de Core Data, una de les tecnologies més potents per a la gestió de dades en aplicacions iOS.

Objectius del Tema

  • Entendre com configurar Core Data en un projecte Xcode.
  • Aprendre a crear models de dades.
  • Recuperar dades de la base de dades.
  • Mostrar les dades recuperades en la interfície d'usuari.

Configurant Core Data en un Projecte Xcode

Passos per Configurar Core Data

  1. Crear un Nou Projecte Xcode amb Core Data:

    • Obre Xcode i selecciona "Create a new Xcode project".
    • Tria "App" i assegura't de marcar l'opció "Use Core Data" abans de continuar.
  2. Entendre l'Arquitectura de Core Data:

    • Core Data utilitza un model d'objectes per gestionar dades. Els components clau són:
      • NSManagedObjectModel: Defineix l'estructura de les dades.
      • NSPersistentStoreCoordinator: Coordina l'emmagatzematge de dades.
      • NSManagedObjectContext: Gestiona els objectes de dades en memòria.

Exemple de Configuració de Core Data

import CoreData

class CoreDataStack {
    static let shared = CoreDataStack()

    private init() {}

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

    var context: NSManagedObjectContext {
        return persistentContainer.viewContext
    }
}

Creant Models de Dades

Definint Entitats i Atributs

  1. Obrir el Model de Dades:

    • A la navegació del projecte, selecciona el fitxer .xcdatamodeld.
    • Afegeix una nova entitat fent clic al botó "+" a la part inferior de la finestra.
  2. Afegir Atributs a l'Entitat:

    • Selecciona l'entitat creada i afegeix atributs com ara name (String), age (Integer), etc.

Exemple de Creació d'Entitat

import CoreData

@objc(Person)
public class Person: NSManagedObject {
    @NSManaged public var name: String?
    @NSManaged public var age: Int16
}

Recuperant Dades de la Base de Dades

Utilitzant NSFetchRequest

  1. Crear una Sol·licitud de Recuperació:

    • Utilitza NSFetchRequest per definir els criteris de recuperació de dades.
  2. Executar la Sol·licitud:

    • Utilitza el context de Core Data per executar la sol·licitud i obtenir els resultats.

Exemple de Recuperació de Dades

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

Mostrant les Dades Recuperades en la Interfície d'Usuari

Utilitzant UITableView per Mostrar Dades

  1. Configurar el UITableView:

    • Afegeix un UITableView a la teva vista i crea les connexions necessàries.
  2. Implementar els Mètodes de Data Source:

    • Implementa els mètodes UITableViewDataSource per mostrar les dades recuperades.

Exemple de Mostratge de Dades en un UITableView

import UIKit

class PeopleViewController: UIViewController, UITableViewDataSource {
    @IBOutlet weak var tableView: UITableView!
    
    var people: [Person] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        people = fetchPeople()
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return people.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "PersonCell", for: indexPath)
        let person = people[indexPath.row]
        cell.textLabel?.text = person.name
        cell.detailTextLabel?.text = "\(person.age)"
        return cell
    }
}

Exercicis Pràctics

Exercici 1: Crear i Recuperar Dades

  1. Objectiu: Crear una nova entitat Book amb atributs title (String) i author (String). Recuperar i mostrar els llibres en un UITableView.
  2. Passos:
    • Afegeix l'entitat Book al model de dades.
    • Implementa la classe Book amb els atributs necessaris.
    • Crea una funció per recuperar els llibres de la base de dades.
    • Mostra els llibres en un UITableView.

Solució de l'Exercici 1

import CoreData

@objc(Book)
public class Book: NSManagedObject {
    @NSManaged public var title: String?
    @NSManaged public var author: String?
}

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

class BooksViewController: UIViewController, UITableViewDataSource {
    @IBOutlet weak var tableView: UITableView!
    
    var books: [Book] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        books = fetchBooks()
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return books.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "BookCell", for: indexPath)
        let book = books[indexPath.row]
        cell.textLabel?.text = book.title
        cell.detailTextLabel?.text = book.author
        return cell
    }
}

Resum

En aquest tema, hem après a configurar Core Data en un projecte Xcode, crear models de dades, recuperar dades de la base de dades i mostrar-les en la interfície d'usuari. Aquests conceptes són fonamentals per a la gestió de dades en aplicacions iOS i proporcionen una base sòlida per a treballar amb dades de manera eficient. En el següent tema, explorarem com persistir dades a la base de dades.

© Copyright 2024. Tots els drets reservats