Home / Objective-C iOS / iOS: ORM (Object-relational mapping)

iOS: ORM (Object-relational mapping)

SharkORM-prototype-logo-and-text-1-e1465121576444-copy-copy

Ciao a tutti cari amici di iProg, oggi vorrei illustrarvi una fantastica libreria opensource  per iOS, ma prima di introdurvi quest’ultima vorrei spendere due parole su cosa si intende per ORM.

Il termine ORM fa riferimento alla tecnica di mappatura dei dati da un modello object oriented su  di un modello di dati relazionale, quindi il framework che andrò a presentarvi consentirà di effettuare il mapping tra le classi e le tabelle di un database inoltre la maggior parte degli ORM consentono di effettuare delle query per il recupero dei dati.

Dopo questa piccola premessa (molto basilare) andiamo a creare un’ applicazione d’esempio. Per prima cosa creiamo un nuovo progetto swift di tipo single view application (il framework è compatibile anche con il linguaggio Objective-C), quindi spostiamoci nella cartella del progetto e lo inizializziamo come progetto “cocoapods” (se non sai come fare vedi qui) fatto ciò nel file Podfile inseriamo la seguente stringa: pod “SharkORM” in maniera da aggiungere la libreria sharkorm nel nostro progetto, infine installiamo il tutto tramite il comando pod install.

Per prima cosa apriamo il file Appdelegate per settare il tutto:

import UIKit
import SharkORM
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate,SRKDelegate {
 var window: UIWindow?
 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
 SharkORM.setDelegate(self)
 SharkORM.openDatabaseNamed("myDatabase")
 return true
 }
A questo punto creiamo due classicome modello dei nostri dati, La prima è Person:
import UIKit
import SharkORM
class Person: SRKObject {
 dynamic var nome : String?
 dynamic var cognome : String?
 dynamic var eta : NSNumber?
 dynamic var auto : Auto?
}

Mentre l’altra è Auto:

import UIKit
import SharkORM
class Auto: SRKObject {
 dynamic var name : String?
 dynamic var marca : String?
}

nel file ViewController scriviamo:

import UIKit

class ViewController: UIViewController {

 override func viewDidLoad() {
 super.viewDidLoad()
 //Cancelliamo tutti i dati dalle tabelle
 dropTable()
 //creo delle persone e delle auto
 //ad ogni persona gli assegno un auto ed infino eseguo il commit
 //
 
 let citroenC1 = Auto()
 citroenC1.name = "C1"
 citroenC1.marca = "Citroen"
 
 let citroenC3 = Auto()
 citroenC3.name = "C3 picasso"
 citroenC3.marca = "Citroen"
 
 let mario = Person()
 mario.nome = "Mario"
 mario.cognome = "Rossi"
 mario.eta = 40
 mario.auto = citroenC1
 mario.commit()
 let francesco = Person()
 francesco.nome = "Francesco"
 francesco.cognome = "Bianchi"
 francesco.eta = 10
 francesco.auto = citroenC3
 francesco.commit()
 
 let giorgio = Person()
 giorgio.nome = "Giorgio"
 giorgio.cognome = "Savarese"
 giorgio.eta = 20
 giorgio.auto = citroenC3
 giorgio.commit()


 
 //effetuo una semplice query (seleziono tutte le persone con età > 9 e li ordino per nome)
 let results = Person.query()
 .whereWithFormat("eta > %@", withParameters: [9])
 .orderBy("nome")
 .fetch()

 var persons = [Person]()

 //salvo il risultato in un array di persone
 for i in results {
 let person = Person ()
 person.nome = i.nome
 person.cognome = i.cognome
 person.eta = i.eta
 person.auto = i.auto
 persons.append(person)
 }
 //Stampo i nomi delle persone restituitemi dalla query
 for i in persons {
 print("\(i.nome!)")
 }
 
 }
 
 func dropTable(){
 Person.query().fetch().removeAll()
 Auto.query().fetch().removeAll()
 }</pre>

Questo è solo un semplice esempio di come utilizzare questa libreria, per maggiori informazioni potete visionare la documentazione presso il seguente link

download_esempio-300x120

About Diego

Scroll To Top
Si prega di attivare i Javascript! / Please turn on Javascript!

Javaskripta ko calu karem! / Bitte schalten Sie Javascript!

S'il vous plaît activer Javascript! / Por favor, active Javascript!

Qing dakai JavaScript! / Qing dakai JavaScript!

Пожалуйста включите JavaScript! / Silakan aktifkan Javascript!