Codable – JSON facile con Swift 4


JSON è ormai utilizzato diffusamente come formato di interscambio dati su internet. È molto comune per uno sviluppatore lavorare con JSON, specie se si tratta di app per smartphone.

In Swift 4 è stato introdotto il protocol Codable come parte del framework Foundation e serializzare o deserializzare un oggetto in JSON richiede tre linee di codice ;).

Le nuove API disponibili nel framework Foundation sono state presentate al WWDC 2017, vi consiglio di guardare il video a questo link: What’s New in Foundation (le API di cui sto parlando vengono illustrate dal minuto 23 in poi).

Vediamo come è diventato immediato e semplice convertire un oggetto in JSON e viceversa.

Continua a leggere Codable – JSON facile con Swift 4

UIImageView – pinch to zoom in iOS Swift 3+

Avete una UIImageView e volete dare la possibilità all’utente di ingrandire l’immagine e muoverla con un “pizzico”?

SOLUZIONE: aggiungere una scrollview e tre righe di codice 🙂

  • Aggiungiamo una ScrollView che conterrà la UIImageView

ScrollView > ImageView

  • Modifichiamo il ViewController in modo da implementare il protocol (o interfaccia) UIScrollViewDelegate e aggiungiamo queste righe di codice:
import UIKit

class ImageViewController: UIViewController,  UIScrollViewDelegate {
//MARK: - controls
  
    @IBOutlet weak var imgView: UIImageView!
    @IBOutlet weak var scrollView: UIScrollView!

//MARK: - View Controller methods

    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.delegate = self
        scrollView.minimumZoomScale = 1.0
        scrollView.maximumZoomScale = 6.0
    }

//MARK: - UIScrollViewDelegate implementations

    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        return imgView
    }
}

Finito. Non è necessario altro.

Happy coding… 🙂

Salvare le preferenze utente in iOS e macOS con Swift

Quando creiamo un’applicazione, spesso desideriamo salvare le preferenze dell’utente per riutilizzarle in esecuzioni successive. Ad esempio, possiamo voler salvare quali notifiche l’utente desidera ricevere, lo schema di colori e altre personalizzazioni. Alcune volte, può essere necessario salvare delle preferenze nascoste (o implicite).

Il framework Foundation rende disponibile la classe UserDefaults. Questa classe permette di accedere ad un “database” nel quale è possibile salvare delle coppie chiave-valore  che vengono persistite nelle diverse esecuzioni dell’app. Continua a leggere Salvare le preferenze utente in iOS e macOS con Swift

Mostrare notifiche all’utente in iOS 8+ Swift 3

Per mostrare un messaggio di alert all’utente è possibile usare la classe UIAlertController (da notare che UIAlertView è ormai considerata deprecata).  UIAlertController è disponibile da iOS 8+ nel framework UIKit. Permette di configurare il controller con le azioni e lo stile desiderato e poi di mostrarlo all’utente.

Sono disponibili due stili nella enum UIAlertControllerStyleactionSheetalert.

La differenza è ben chiara da questa immagine, a sinistra una notifica on stile alert a destra di tipo actionSheet.

Stili UIAlertController

È possibile anche aggiungere dei campi di testo per permettere l’inserimento di dati all’utente, oltre a diversi pulsanti (action).

L’utilizzo della classe è molto semplice in Swift: Continua a leggere Mostrare notifiche all’utente in iOS 8+ Swift 3

Java Native Access (Parte 2) – Primi passi

Per comprendere l’utilizzo di una tecnologia non c’è nulla di meglio che provarla. Quale migliore esempio se non il classico Hello, World!”?

Il codice che analizzeremo tra breve è preso direttamente dagli esempi presenti nella guida ufficiale.

HelloWorld.java

package it.spicydev.blog.jna;

import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;

/**
 * Date: 1/21/12 7:06 PM
 *
 * @author Mircha Emanuel `ryuujin` D'Angelo
 * @version 1.0
 */
public class HelloWorld {
     /**
     * Java interface to hold the native library methods extending the Library interface
     */
    public interface CLibrary extends Library {
        CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
                (Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);

        void printf(String format, Object... args);
    }

     public static void main(String[] args) {
        CLibrary.INSTANCE.printf("Hello, World\n");
        CLibrary.INSTANCE.printf("%d %f\n",1,3.14);
    }

}

Continua a leggere Java Native Access (Parte 2) – Primi passi

Singleton – Design Pattern Creazionale

Lo scopo del pattern Singleton è quello di assicurare che una classe ha una sola istanza e provvedere un unico punto di accesso ad essa.

E’ un pattern molto semplice da implementare, ma e’ bene comprendere che non va abusato! Una cosa che cerco di spiegare sempre e’ che un refactoring del codice non introduce benefici solo perche’ e’ stato utilizzato un pattern.

Il Singleton va usato solo quando si verificano queste condizioni:

Continua a leggere Singleton – Design Pattern Creazionale