Ti sei mai chiesto perché l’App Store del tuo Mac sia così scarno di applicazioni? e perché nessuno mai spiega come creare un’applicazione per OSX con il linguaggio Swift?

Le motivazioni di questa carenza possono essere attribuite a molti fattori. In primis:

  • La mancanza di un’utenza forte che porta gli sviluppatori a trattare questo settore.
  • Paradossalmente, le App per OSX sono molto più semplici da crackare rispetto al concorrente App Store per iOS.
  • Ci sono molte limitazioni per quanto riguarda le specifiche che deve rispettare un’applicazione per OSX.

Eppure negli ultimi anni la percentuale di utilizzatori di un sistema operativo OS X è in costante crescita. Secondo una statistica condotta da w3schools.com sulle visite del suo sito, dal 2003 al 2014 la percentuale di visitatori con MacOS è passata dal 2% al 10.4% con un incremento di ben otto punti percentuali. Incremento non da poco considerando che w3schools è un sito di programmazione web, dove principalmente si utilizza un sistema Linux based o sistemi Windows.

Quindi, fortunatamente, le cose stanno cambiando. Il mercato dei Mac è in costante crescita (anche grazie all’interoperabilità che si ha con un iPhone) e  ciò non può che significare ampi margini di successo e guadagno.

Ok Peppe, più o meno mi hai convinto. Com’è che posso creare la prima applicazione per OS X con Swift?

La prima cosa che ti consiglio, se non hai mai sviluppo applicazioni per iOS o non hai le conoscenze del linguaggio Swift, è di cominciare partendo dalle basi. Se vuoi, puoi seguire il mio corso gratuito sul linguaggio Swift.

Fatta la premessa, veniamo a noi.

In questo tutorial imparerai a creare la prima applicazione per OS X con Swift. L’applicazione che creerai sarà la rivisitazione in chiave Apple del semplice e famoso Hello World. L’applicazione sarà composta da una finestra contenente un campo di testo dove l’utente potrà scrivere un messaggio. Questo messaggio, verrà poi stampato (cioè mostrato) nella stessa finestra dell’applicazione.

Con questa semplice applicazione per OS X voglio farti toccare con mano i primissimi concetti e meccanismi dello sviluppo app con il linguaggio Swift. Quindi, voglio farti vedere:

  • Come creare un progetto per un’applicazione OS X.
  • Navigare nello storyboard di Xcode.
  • Gli elementi grafici principali: label, text field e bottoni.

Creare un progetto OS X in Xcode

La procedura è molto semplice e sei già uno sviluppatore iOS puoi saltare questi passaggi. Apri Xcode dal tuo launchpad e, dalla finestra di benvenuto, clicca su Create a new Xcode project, in alternativa puoi fare la stessa cosa dal menu in alto selezionando File\New\Project…

Se avete problemi già a questo punto vi consiglio di leggervi la Guida all’interfaccia di Xcode.

Seleziona OS X, poi Cocoa Application, fai Next. Aggiungi un Product Name (il nome dell’app), selezionate Swift come Language e assicurati di aver abilitato l’utilizzo dello Storyboard, fai Next e poi Create:

Setting progetto App per MacOS in Swift e xcode
L’interfaccia di Xcode è quella delle versioni precedente alla 7.

Lo StoryBoard di un’app OS X

Dal Project Navigator selezionate il Main.storyboard. Lo storyboard è uno strumento che ti permette di gestire tutte le interfacce che compongono la tua applicazione. Il tuo storyboard dovrebbe avere tre finestre:

  1. Main Menu: Rappresenta la barra classica del menu che visualizzi in alto nello schermo del tuo Mac.
  2. Window Controller: É delegato alla gestione dei View Controller (più o meno com’è il Navigation Controller per iOS). Non è né modificabile né visibile, offre solo degli strumenti di supporto alle View Controller.
  3. View Controller: É la finestra con cui l’applicazione si interfaccia all’utente. Qui inserirai gli elementi grafici della tua applicazione.

La freccia che entra dentro il Window Controller, quella da sinistra verso destra, rappresenta il punto di partenza dell’applicazione. La freccia che collega il Window Controller al il View Controller si chiama Segue e imparerai a capire cos’è nei successivi tutorial.

storyboard progetto OS X completo

storyboard progetto OS X

Aggiungere elementi ad una View

La tua prima applicazione per OS X con il linguaggio Swift per essere completa ha bisogno di alcuni elementi grafici per poter essere utilizzata. Dall’Object Library trascina, all’interno del View Controller, un Label, un Push Button e una Text Field. Con doppio click sulla Label puoi cambiare il text in “Ciao”. La stessa cosa puoi farla con il bottone mettendo “Invia” o “Saluta”:

aggiungere elementi alla view progetto os x in xcode

Una cosa che nel video non si vede è che ho dimenticato di modificare le dimensioni della label. Infatti se lasciata delle dimensioni standard non farà visualizzare il testo in più inserito dal codice, quindi selezionala e allarga le dimensioni:

modificare le dimensioni della label

Adesso prova ad avviare l’applicazione dal bottone triangolare in alto a sinistra. Quello che viene fuori è un’applicazione che ancora non esegue nessuna azione, infatti se provi a scrivere all’interno della Text Field ed a premere il bottone non succede assolutamente nulla:

primo avvio Hello World la prima App per MacOS in Swift

Collegare il codice all’interfaccia, IBOutlet e IBAction 

Non succede assolutamente nulla perché ancora non hai collegato l’interfaccia al codice che la controlla. Il tuo View Controller è gestito da una Classe figlia della NSViewController che si chiama appunto ViewController. Questa classe la puoi trovare nel file, dall’omonimo nome, ViewController.Swift, esso è colui che è delegato a controllare e gestire la View Controller in cui hai inserito gli elementi grafici.

Quello che farai sarà creare delle connessioni tra codice ed interfaccia. Così, quando l’utente premerà su un elemento, potrà attivarsi il relativo codice che gestisce quel particolare evento. Esistono, fondamentalmente, due tipi di connessione la IBOutlet (Interface Builder Outlet) e la IBAction (Interface Builder Action).

  • L’IBOutlet è una connessione tra l’elemento dell’interfaccia ed un variabile che ha lo stesso tipo di dato. Con la IBOutlet potrai riferirti all’elemento dell’interfaccia a cui è collegato e modificarne, per esempio, il suo aspetto e comportamento.
  • La IBAction al contrario serve a creare delle azioni che vengono invocate qualora un evento nascesse in seguito al cambiamento di stato dell’elemento grafico a cui è collegato. Mi spiego meglio: Quando premi un bottone stai eseguendo un azione, quest’azione la gestirai grazie alla IBAction.

Per poter collegare il codice all’interfaccia, apri l’Assistant Editor (che associa all’elemento selezionato nello storyboard il rispettivo codice), poi selezionate la Label e con CTRL+CLICK SINISTRO trascina la freccia, che si viene a creare, all’interno della classe ViewController. Dal menu che ti apparirà inserisci un nome e clicca su Connect.
La stessa identica operazione eseguila per il Text Field.

Per il Button le cose cambiano un po’, in quanto, invece di una IBOutlet devi creare una IBAction. Pertanto quando si apre il menu per la connessione, cambia la Connection da Outlet a Action e inserisci un Name significativo come “salutaButton_Clicked” che ti farà ricordare che quell’azione cattura la pressione del bottone:

collegare il codice all'interfaccia Hello World la prima App per MacOS in Swift

Il codice ed il test dell’applicazione

Se non hai un minimo di conoscenze del linguaggio Swift basilare o della programmazione ad oggetti tutto quello che stiamo facendo ti sembrerà arabo. Ti invito, pertanto, a iniziare il mio corso gratuito di programmazione swift.

Adesso vogliamo che all’invocazione della Action il bottone modifichi la Label in modo da aggiungere il testo scritto all’interno della Text Field. Modifichiamo la funzione salutaButton_Clicked:

    @IBAction func salutaButton_Clicked(sender: AnyObject) {
        
        if(!txtField.stringValue.isEmpty) {
            txtLabel.stringValue = "Ciao \(txtField.stringValue)"
        }
        
    }

Il codice prima controlla che il testo contenuto nella txtField non sia vuoto, se esiste unisce quel testo a “Ciao” e lo riporta nella txtLabel.

A differenza di quanto accade in iOS, il testo di un oggetto non si legge o modifica tramite .text ma bensì con .stringValue. Già da qui si capisce perché, chi sviluppa app per iOS, difficilmente passa ad OS X. C’è da dire che Apple ha lasciato intendere che, in futuro, potrebbero cambiare le cose a favore di un sistema di programmazione unificato sia per iOS che OSX.

Avvia nuovamente l’applicazione, ora fa quello per cui è stata creata!

test Hello World la prima App per MacOS in Swift

Conclusione e Download del progetto

Spero di averti fornito le conoscenze basilari riguardanti il come creare la prima applicazione per OS X con Swift. Non ho voluto complicare troppo il progetto perché è necessario, sopratutto per i nuovi sviluppatori, capire bene quali sono i meccanismi alla base della creazione di un’applicazione. Nel tutorial successivo ti farò vedere come creare una TableView per OS X con il linguaggio Swift.

Comunque qualora avesti avuto dei problemi con il tuo progetto o lo vuoi confrontare con il mio, qui sotto trovi il download:

[sociallocker]

[wpdm_package id=’1153′]

[/sociallocker]

Buona Programmazione!