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
NSFetchRequestper 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
UITableViewa la teva vista i crea les connexions necessàries.
- Afegeix un
-
Implementar els Mètodes de Data Source:
- Implementa els mètodes
UITableViewDataSourceper 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
Bookamb atributstitle(String) iauthor(String). Recuperar i mostrar els llibres en unUITableView. - Passos:
- Afegeix l'entitat
Bookal model de dades. - Implementa la classe
Bookamb 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ó
