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
-
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.
-
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
- Obre el fitxer
.xcdatamodeld
en Xcode. - Afegeix una nova entitat, per exemple, "Person".
- 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
- Crea una nova entitat anomenada "Book" amb els atributs "title" (String) i "author" (String).
- Escriu una funció per guardar un llibre en Core Data.
Exercici 2: Recuperar i Mostrar Dades
- Escriu una funció per recuperar tots els llibres guardats.
- Mostra els llibres en una taula.
Exercici 3: Eliminar una Entitat
- Escriu una funció per eliminar un llibre específic.
- 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.
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ó