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
-
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.
-
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.
- Core Data utilitza un model d'objectes per gestionar dades. Els components clau són:
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
-
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.
- A la navegació del projecte, selecciona el fitxer
-
Afegir Atributs a l'Entitat:
- Selecciona l'entitat creada i afegeix atributs com ara
name
(String),age
(Integer), etc.
- Selecciona l'entitat creada i afegeix atributs com ara
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
-
Crear una Sol·licitud de Recuperació:
- Utilitza
NSFetchRequest
per definir els criteris de recuperació de dades.
- Utilitza
-
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
-
Configurar el UITableView:
- Afegeix un
UITableView
a la teva vista i crea les connexions necessàries.
- Afegeix un
-
Implementar els Mètodes de Data Source:
- Implementa els mètodes
UITableViewDataSource
per mostrar les dades recuperades.
- Implementa els mètodes
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
- Objectiu: Crear una nova entitat
Book
amb atributstitle
(String) iauthor
(String). Recuperar i mostrar els llibres en unUITableView
. - 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
.
- Afegeix l'entitat
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.
Dominar Xcode: De Principiant a Avançat
Mòdul 1: Introducció a Xcode
- Començant amb Xcode
- Entenent la Interfície de Xcode
- Creant el teu Primer Projecte Xcode
- Navegació Bàsica de Xcode
Mòdul 2: Conceptes Bàsics de Swift a Xcode
- Introducció a la Programació en Swift
- Variables i Constants
- Tipus de Dades i Operadors
- Flux de Control
- Funcions i Closures
Mòdul 3: Construint Interfícies d'Usuari
- Introducció a Interface Builder
- Dissenyant amb Storyboards
- Auto Layout i Constriccions
- Utilitzant les Previsualitzacions de Xcode
- Creant Components UI Personalitzats
Mòdul 4: Treballant amb Dades
Mòdul 5: Depuració i Proves
- Conceptes Bàsics de Depuració
- Utilitzant Breakpoints
- Proves Unitàries
- Proves d'Interfície d'Usuari
- Proves de Rendiment
Mòdul 6: Funcions Avançades de Xcode
- Utilitzant Instruments per a l'Optimització del Rendiment
- Tècniques Avançades de Depuració
- Configuracions de Compilació Personalitzades
- Scripting amb Xcode
- Integració amb Sistemes d'Integració Contínua
Mòdul 7: Desplegament d'Aplicacions
- Preparant per a la Submissió a l'App Store
- Creant Captures de Pantalla per a l'App Store
- Gestionant les Metadades de l'App Store
- Enviant la teva Aplicació
- Millors Pràctiques Post-Submissió