In questo tutorial ti spiegherò come usare core data per salvare e leggere dati dalla tua app iOS. Vedrai un semplice esempio che ti mostrerà come definire un'entità utilizzando core data e come salvare e leggere i dati da questa entità.
Crea un nuovo progetto Swift a singola vista. Quando compili il nome dell'app, attiva l'opzione Use core data.
Una volta creato il progetto, potrai accedere al file con estensione xcdatamodeld. Qui potrai definire il nome della tua entità e la struttura. Per creare l'entità, premi sul bottone add entity. Fai click sull'entità appena aggiunta e imposta il nome Data. Come struttura dell'entità in questo esempio utilizzeremo un array di stringhe. Per crearla, premi il bottone + posto nella sezione attributes. Quindi imposta come nome name e come tipo string.
A questo punto apri il file ViewController.swift e importa le librerie core data necessarie:
import UIKit import CoreData //import the CoreData
Un oggetto core data può essere definito come:
var name_list = [NSManagedObject]()
Ora andremo a definire le funzioni per salvare i dati, leggerli e cancellarli.
Salvare i dati in un'entità core data
func save(name:String) { let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate let managedContext = appDelegate.managedObjectContext! //Data is in this case the name of the entity let entity = NSEntityDescription.entityForName("Data", inManagedObjectContext: managedContext) let options = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:managedContext) options.setValue(name, forKey: "name") var error: NSError? if !managedContext.save(&error) { println("Could not save") } //uncomment this line for adding the stored object to the core data array //name_list.append(options) }
Leggere i dati da una entity core data
func read() { let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate let managedContext = appDelegate.managedObjectContext! let fetchRequest = NSFetchRequest(entityName: "Data") var error: NSError? let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]? if let results = fetchedResults { for (var i=0; i < results.count; i++) { let single_result = results[i] let out = single_result.valueForKey("name") as String println(out) //uncomment this line for adding the stored object to the core data array //name_list.append(single_result) } } else { println("cannot read") } }
Cancellare i dati da un'entità core data
func clear_data() { let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate let managedContext = appDelegate.managedObjectContext! let fetchRequest = NSFetchRequest(entityName: "Data") var error: NSError? let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]? if let results = fetchedResults { for (var i=0; i < results.count; i++) { let value = results[i] managedContext.deleteObject(value) managedContext.save(nil) } } }
Esempio
Vediamo ora un semplice esempio che mostra come poter utilizzare le funzioni definite. Questo esempio andrà a cancellare tutti i dati salvati nell'entità, salvare nuovi dati e leggerli.
override func viewDidLoad() { super.viewDidLoad() //clear everything clear_data() //save the data save("kaleidos blog") save("Put here what you want to store") read the data and display it in the debug read() }
Lascia un commento