Attenzione! Parse ha deciso di chiudere i battenti a Gennaio 2017. Ho, per tanto, deciso di non trattare più Parse come sistema di supporto. Da ora in avanti utilizzeremo Firebase. Clicca qui per aggiornarti

Stanco di dover cercare soluzioni al salvataggio dei dati su un server? distruggi e mandi in frantumi il tuo mac perché non riesci a connetterti ad un Database? Non sai come creare un database online per la tua applicazione iOS?

Bene, questo è il tutorial che fa per te!

Parse è un servizio che permette di salvare e recuperare velocemente dati da un database ed il tutto, ascolta bene, senza dover creare query di ricerca o interagire con il vero e proprio database. Ha una bellissima interfaccia user friendly che ti permetterà di comunicare con un database in maniera intuitiva e senza dover direttamente interagire con esso.

Devi salvare un’immagine, un’oggetto, un’array su un Database Online? Non c’è niente di più semplice di Parse. Per Connettere il Database Parse con una applicazione iOS ti basterà implementare il framework Parse e scrivere pochissime righe di codice con il linguaggio Swift.

In poche parole Parse è la salvezza per la maggior parte dei nuovi programmatori che hanno bisogno di un database online e non hanno e le conoscenze di sql o php.

Se ti ho incuriosito, queste sono le cose che imparerai da questo tutorial:

  1. Registrare la tua applicazione a Parse.
  2. Connettere la tua applicazione iOS al Database dedicato su Parse.
  3. Creare una PFClass ed un PFObject.
  4. Salvare un’informazione sul database Parse.

Sei pronto? Cominciamo!

Cos’è Parse Online e perché conviene

Parse non ha solo funzionalità di Database, permette anche di mandare notifiche Push, comunicare con Android e altre moltissime funzionalità. Quindi se sei uno sviluppatore iOS, di nuova o vecchia data, e stai cercando un database online da collegare alla tua applicazione, Parse diventerà il tuo miglior amico.

Noi italiani abbiamo nel sangue la capacità di diffidare sempre dalle soluzioni altrui, quindi se ti sta passando per la testa la fatidica domanda: perché dovrei affidarmi ad un servizio esterno? ti dico solamente che Parse è utilizzato da più di 100.000 applicazioni e tra gli utilizzatori figurano società come Cisco, Zynga e l’AMC. In più, Parse, è un società acquisita da Facebook.

Dimenticavo di dirti che è gratis per un utilizzatore medio come potresti essere tu. Mentre per la gestione di grandi app c’è un canone da pagare, comunque inferiore rispetto a quanto pagheresti per un database e un server con le stesse capacità.

Se questo ancora non ti basta continua a leggere e capirai da solo perché Parse è così utilizzato.

Parse: Registrazione e Guida all’interfaccia

La prima cosa da fare è creare un account. Vai su www.Parse.com e clicca sul bottone Sign Up in alto a destra, si aprirà una finestra la quale ti chiederà di entrare con facebook, registrarti normalmente, entrare con l’account Google o con l’account di GitHub.

Scegli quello che preferisci:

Parse Interfaccia sito web

Parse Signup

Nella pagina di SignUp c’è un campo relativo al nome della tua prima applicazione (Name your first app). Ovviamente questo non significa che creerai un’applicazione, ti sta chiedendo di dare un nome allo spazio di archiviazione. Dato che, in genere, si utilizza Parse per collegare un’applicazione viene logico utilizzare lo stesso nome dell’applicazione iOS.

Quindi in realtà quello che ti sta chiedendo è: Metti il nome della tua applicazione iPhone, o OS X che sia, poi noi provvederemo a crearti uno spazio di memorizzazione che avrà lo stesso nome di riferimento della tua app. Creare un’applicazione con Parse equivale a creare uno spazio o DB. É più un buon senso che una norma dover inserire il nome uguale a quello dell’applicazione.

Io come nome applicazione ho messo testParse. 

Una volta che avrai creato il tuo account, si aprirà un’altra finestra contenente una sfilza di bottoni. Questa pagina si chiama QuickStart Guide. Qui trovi le guide per poter integrare Parse alla tua applicazione. Come puoi ben notare, Parse, può essere integrato con tantissimi sistemi e non solo iOS o Android.

Nella parte in alto dell’interfaccia, clicca su Core. Il Core è la pagina che rappresenta l’archiviazione dei tuoi dati.

Quick Start Parse

I dati vengono salvati in delle Class (classi) che rappresentano il raggruppamento di un tipo di dato. Ad esempio potresti avere la classe giocatore dove verranno salvati tutte le informazioni relative ai giocatori della tua App.

Il sistema è simile a quello della programmazione ad oggetti. Infatti questi sistemi vengono anche chiamati di Proxy perché rendono un sistema complesso, come potrebbe essere quello di un Database, vicino all’ambiante di un programmatore di applicazioni iOS.

Infatti da sviluppatore di applicazioni iOS sei sempre a stretto contatto con classi ed oggetti. Su Parse una Class rappresenta una tipologia di informazioni, infatti potrai definire attributi e tipi di dato. I dati di una Class sono i dati che trasporterai dalla tua applicazione in quello spazio.

Ti faccio un esempio.

Nella tua applicazione creerai un oggetto di tipo Giocatore. Nell’applicazione su Parse hai pure una classe Giocatore che ha gli stessi attributi di quelli presenti nella classe della tua applicazione. Grazie ai framework di Parse potrai interfacciare la tua Classe con la Class di Parse.

Così gli oggetti che creerai nell’applicazione li salverai direttamente nel database di Parse.

Ma andiamo con calma, sotto vedrai come fare tutto ciò, intanto questa è l’interfaccia che dovresti vedere:

Il data browser di Parse

Alcuni tasti sono molto intuitivi. C’è una sezione sull’Analytics quindi sull’analisi dei dati salvati (frequenza, chiamate ecc). Un pannello per le notifiche Push (che non tratteremo) ed il Settings dell’applicazione. Altre sezioni hanno bisogno di più tempo per essere spiegate e per non mischiare le cose non lo farò in questo tutorial.

In questo tutorial ti farò muovere i primi passi per la connessione di un’applicazione iOS ad un Database Parse.

Integrare Parse alla propria applicazione iOS. Il Parse.framework e il Bolts.Frameworks

Passiamo alla pratica! Per collegare la tua applicazione reale con Parse per prima cosa devi creare un progetto, ma va?

Apri Xcode e crea un nuovo progetto Single View Application. Se sei un pigrone, in fondo al tutorial trovi il download del progetto di prova.  Per poter connettere la propria applicazione iOS, con il l’applicazione creata su Parse, è necessario utilizzare il framework appositamente progettato. Collegati qui e scarica l’ultima versione dell’SDK per iOS. Al tempo della stesura di questo articolo l’ultima versione è l’SDK 1.9.1 che puoi scaricare da qui.

Torna su Xcode e trascina all’interno del tuo progetto sia il Parse.framework che il Bolts.frameworks. Li trovi nella cartella appena scaricata:

Connettere la propria app a Parse online

Per poter funzionare il Parse.framework ha bisogno di alcune dipendenze di compilazione. Spostati nel Build Phases del tuo progetto e apri il menu Link Binary with Library:

Le dipendenze di Parse

Aggiungi i seguenti framework e file:

  • AudioToolbox.framework
  • CFNetwork.framework
  • CoreGraphics.framework
  • CoreLocation.framework
  • libsqlite3.tbd
  • libz.tbd
  • MobileCoreServices.framework
  • QuartzCore.framework
  • Security.framework
  • StoreKit.framework
  • SystemConfiguration.framework

Connessione tra Parse Online e App iOS con il linguaggio Swift

Il primo passaggio è quello di stabilire la connessione tra l’applicazione iOS con il linguaggio Swift e l’applicazione che hai creato su Parse Online.

Apri l’AppDelegate.Swift e importa Parse:

import UIKit
import Parse

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

Poi, modifica il metodo didFinishLaunchingWithOptions in modo da creare la connessione tra la tua Applicazione Parse e quella iOS:

   func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        Parse.setApplicationId("Application_ID", clientKey: "client Key")

    }

Il metodo didFinishLaunchingWithOptions, se stai seguendo il corso iOS tenuto da me, sai che viene invocato quando l’UIApplication viene creata ed ha finito di caricarsi in memoria. Questo è il metodo in cui vengono inserite le ultime impostazioni della tua applicazione. Ad esempio, nel nostro caso, stiamo chiamando il il metodo della classe Parse, setApplicationId, che vuole come parametri:

  1. Application ID: La stringa identificativa dell’ID dell’applicazione di Parse.
  2. ClientKey: La stringa che identifica l’utente o admin dell’account Parse.

Dove trovo l’ApplicationID e la ClientKey della mia applicazione Parse?

Torna sulla dashboard di Parse, vai su Settings e poi su Keys. Da qui copia le 2 key (la appId e la clientKey) e incollale negli spazi della tua funzione Parse.setApplicationId:

ApplicationID e ClientKey applicazione Parse

Fai attenzione perché queste chiavi che vedi nello screen sono quelle della mia applicazione su Parse. Quindi mettendoli nel tuo progetto ti collegherai al mio spazio. Quindi, le chiavi delle tue applicazioni, custodiscile con cura.

Ti consiglio di utilizzare le tue chiavi se no non potrai vedere realmente cosa combina la tua applicazione.

[mailmunch-form id=”101287″]

Il PFObject. Come salvare dati sul Database Parse

A questo punto la tua applicazione è pronta a trasferire i dati nel Database di Parse associato alla tua applicazione. Il processo, come vedrai, è semplicissimo. Tutto è mascherato dal Framework di Parse che con delle semplici funzioni ti permetterà di salvare un’informazione (di tutti i tipi di dato, anche immagini) sul database online Parse.

Cosa salveremo su Parse?

Immagina che la tua applicazione permetta di salvare una semplice lista di oggetti della spesa da acquistare. Ad esempio l’applicazione che hai creato in questo tutorial potrebbe essere un concorrente perfetto per questo tutorial.

La lista della spesa non risiederà sull’applicazione ma verrà salvata direttamente su Parse. Sul Database di Parse ti ho detto che le informazioni vengono raggruppate in Class. Una Class rappresenta un gruppo di oggetti. Quindi su Parse dovresti creare una Classe chiamata Prodotto (la creeremo da codice). 

La Class avrà degli attributi. Ad esempio il nome dell’oggetto da acquistare (nome), un booleano per vedere se l’oggetto è stato comprato o meno (comprato) ed il prezzo (prezzo).

Un PFObject è una rappresentazione reale di quella classe, quindi un oggetto, a quale riempiremo i suoi attributi con dei valori reali. Una volta che avrai riempito questo PFObject, lo spedirai a Parse per il salvataggio.

Il codice ti aiuterà meglio a capire questo processo.

Spostati nel ViewController.swift, importa Parse (import Parse) e nel metodo ViewDidLoad() aggiungi il seguente codice:

import UIKit
import Parse

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let prodotto = PFObject(className: "Prodotto")
        
        prodotto["nome"] = "Pasta"
        prodotto["comprato"] = false
        prodotto["prezzo"] = 4.55
        
        prodotto.saveInBackgroundWithBlock { (riuscito, errore) -> Void in
            if riuscito == true {
                print("Oggetto salvato correttamente")
            } else {
                print(errore)
            }
        }
        
    }

Nel caso in cui la ClassName, a cui fa riferimento l’oggetto PFObject, non esistesse, la definizione nel codice Swift permetterebbe la sua creazione. Quindi, in questo caso, oltre a creare un PFObject, stai anche creando la classe di riferimento.

let prodotto = PFObject(className: "Prodotto")

L’oggetto PFObject è simile ad un dizionario del linguaggio Swift. Infatti all’oggetto prodotto stai assegnando dei valori alle sue 3 chiavi: nome, comprato e prezzo che saranno anche gli attributi della tua Class su Parse.

Anche in questo caso, dato che la Class la stai creando tutta da codice, gli attributi verranno creati in fase d’avvio dell’applicazione.

Questo è anche uno dei vantaggi di Parse Online e dei suoi framework. Non c’è bisogno di progettare prima la struttura delle classi del tuo database. Quando ti servono li puoi creare direttamente dal codice swift della tua applicazione (Ovviamente, come spesso consiglio nei corsi, una buona progettazione ti aiuta ad ottimizzare il tuo tempo).

Il metodo saveInBackgroundWithBlock salva l’oggetto appena creato sul Database Parse. Il metodo è una closure Swift che accetta come parametri un booleano (nell’esempio l’ho chiamato “riuscito”) ed un oggetto NSError (chiamato errore). Se il salvataggio avviene con successo il booleano passa a true. Nel corpo della closure ho messo un print nel caso in cui l’oggetto è stato salvato. In tutti gli altri casi è false e l’errore viene riempito con un oggetto NSError contenente i dettagli e la causa del problema.

Il momento della verità, avvia l’applicazione!

Adesso vai su Parse e spostati nel Core. Dovresti vedere la nuova classe ed il nuovo oggetto creato e salvato correttamente:

Salvataggio dati su Parse Online con linguaggio Swift

Conclusione e Download del progetto

Questo tutorial sul sistema per connettere il Database Parse con una applicazione iOS utilizzando il linguaggio Swift è davvero, ma dico davvero, introduttivo a tutte quelle che sono le funzionalità che offre Parse.

Se sei interessato a Parse, ho scritto un altro tutorial dove utilizzo il database per creare un sistema di login online

Invece questa è una lista dei tutorial consigliati:

Comunque se vuoi scaricare il progetto fatto da me e confrontarlo con il tuo, scaricalo dal seguente modulo:

[sociallocker][wpdm_package id=’1282′][/sociallocker]

Buona Programmazione!