Chi siamoContattiDisclaimer

Swift core data: come salvare gli oggetti

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












Chi siamoContattiPrivacyDisclaimer