“Protocol Oriented Programming” per la gestione degli storyboard segue

Uno dei problemi ricorrenti nello sviluppo delle applicazioni iOS è la gestione della Storyboard e dei segue. Questi vengono definiti all’interno dello storyboard stesso, mentre alcune operazioni devono essere poi effettuate via codice. Tipicamente via codice si effettuano passaggi di dati o configurazioni che devono essere fatte a runtime.

Situazione attuale

Chiunque abbia utilizzato uno storyboard e i suoi segue avrà poi scritto delle istruzioni simili:

Continua a leggere…

Risolvere il problema di cache della tastiera con UIResponder+KeyboardCache

C’è un fastidioso bug in iOS che causa un ritardo piuttosto significativo tra la prima volta che la tastiera viene richiesta e quando questa appare effettivamente su schermo. Il problema si presenta solo al primo avvio della tastiera, che viene poi mantenuta in cache dal sistema.

Per risolvere questo problema, ho rilasciato su GitHub creato un’estensione in Swift, che permette di forzare la procedura di cache della tastiera (la category originale in ObjectiveC è invece disponibile in questa repository).

Continua a leggere…

Incremento automatico del numero di build in Xcode

Su GitHub ho trovato un utile script che permette di eseguire l’incremento automatico del numero di build in un progetto Xcode.

Lo script incrementa ad ogni run il numero di build del progetto (CFBundleVersion), che deve essere impostato in precedenza ad un valore intero iniziale (ad esempio 1).

Eccovi lo script in questione:

Continua a leggere…

“Life After Cancer: How the iPhone Helped Me Achieve a Healthier Lifestyle”

Federico Viticci (founder ed editor-in-chief di MacStories) ha pubblicato oggi un fantastico articolo in cui racconta la sua vittoria sul cancro, e di come l’iPhone lo abbia aiutato a migliorare il suo stile di vita.

“Life After Cancer: How the iPhone Helped Me Achieve a Healthier Lifestyle” è l’articolo in questione, lo trovate sul suo blog, è una lettura che dovreste assolutamente fare.

Continua a leggere…

Singleton in Swift

Uno dei pattern più utilizzati durante lo sviluppo è sicuramente il Singleton. Per chi non lo sapesse, la definizione di pattern Singleton è la seguente1:

Il singleton è un design pattern creazionale che ha lo scopo di garantire che di una determinata classe venga creata una e una sola istanza, e di fornire un punto di accesso globale a tale istanza.

Con un singleton, quindi, possiamo avere un’unica istanza di una determinata classe, che viene condivisa tra le varie classi che la utilizzano.

Come possiamo creare un singleton in Swift? Vediamo due possibili alternative.

Continua a leggere…

Servizi web per creare mockup di applicazioni mobile

Per un nuovo progetto di lavoro, avrò la necessità di realizzare un mockup di un’applicazione iOS che dovremo sviluppare. In questo giorni ho dedicato un po’ di tempo per cercare un servizio web che mi permetta di realizzare un mockup da condividere con il resto del team.

La scelta di utilizzare servizi web e non app disponibili ad esempio su iPad, è stata dettata da alcune mie necessità. Un servizio web mi permetti di avere più flessibilità, permettendomi di lavorare indipendentemente dal computer su cui mi trovo (spesso mi trovo infatti ad alternarmi tra PC1 e Mac). Utilizzare mouse e tastiera, inoltre, mi è sicuramente più comodo rispetto a passare la giornata chino sul display del mio iPad.

Continua a leggere…

CoreData e la proprietà “Allows External Storage”

In queste ultime settimane sto lavorando, più per passione che per altro, ad una nuova applicazione per iOS (che prima o poi vedrà la luce, spero). Questa app permette all’utente di inserire diverse informazioni, salvandole poi in CoreData. Tra le informazioni da salvare, però, ci sono anche delle immagini.

Proprio in merito alle immagini è sorta la grande domanda: come salvarle in CoreData? È possibile salvarle direttamente all’interno del database oppure è meglio memorizzarle all’esterno e inserire nel database solo il riferimento all’immagine?

Da buon laureato in sistemi informativi ho subito pensato: “Assolutamente non sono da salvare all’interno del database!” e mi sono messo a realizzare una mia implementazione. Tra una ricerca e l’altra su Google, però, ho trovato queste magiche parole: Allows External Storage.

screen1

Approfondendo la cosa ho scoperto di cosa si trattasse. Apple ha introdotto, con iOS 5, un’opzione che permette di realizzare in maniera del tutto automatica un sistema per gestire campi binari di grandi dimensioni.

Continua a leggere…