≡ Menu

Creazione di un’app di Registro del Peso in SwiftUI con Autenticazione

L’applicazione sviluppata serve per monitorare e registrare il peso di un utente in un dato giorno. Offre la possibilità di aggiungere nuovi dati, modificarli ed eliminarli. Inoltre, per garantire la privacy dell’utente, si è integrato un sistema di autenticazione biometrica o tramite codice di sblocco del dispositivo.
Il codice sorgente, completo, può essere prelevato qui.

Struttura del Progetto

Il progetto è realizzato interamente in SwiftUI e sfrutta la persistenza dei dati attraverso UserDefaults. La struttura principale è basata su due View: ContentView e EditView.

Modello dei Dati: WeightEntry

Prima di tutto, definiamo un modello per i nostri dati. Utilizziamo una struttura chiamata WeightEntry, che aderisce ai protocolli Identifiable e Codable. Questo ci permette di avere un ID univoco per ogni entry e la possibilità di codificare e decodificare i dati per la memorizzazione.

struct WeightEntry: Identifiable, Codable {
    var id = UUID()
    var date: Date
    var weight: Double
}

ContentView

La ContentView è il cuore dell’app. Questa view gestisce la visualizzazione dei dati, l’aggiunta di nuovi dati, e l’autenticazione dell’utente.

@State private var data: [WeightEntry] = []
@State private var currentDate = Date()
@State private var currentWeight: String = ""
@State private var weightDifference: Double = 0.0
@State private var showingForm = false
@State private var authenticated = false
  • data: conserva tutte le entry del peso.
  • currentDate e currentWeight: utilizzati per l’aggiunta di nuovi dati.
  • weightDifference: mostra la differenza di peso tra la prima e l’ultima entry.
  • showingForm: gestisce la visualizzazione del modulo per l’aggiunta di nuovi dati.
  • authenticated: tiene traccia dello stato di autenticazione dell’utente.

Autenticazione

Per l’autenticazione, utilizziamo la classe LocalAuthentication. Questo viene fatto nel metodo authenticate(), che viene chiamato quando la ContentView viene caricata.

Salvataggio e Caricamento dei Dati

Utilizziamo UserDefaults per salvare e caricare i dati. I metodi saveData() e loadData() si occupano di questa parte. Poiché il nostro modello dei dati è conforme al protocollo Codable, possiamo facilmente codificare i nostri dati in un oggetto Data e decodificarli.

Calcolo della Differenza di Peso

La funzione calculateWeightDifference() calcola la differenza di peso tra la prima e l’ultima entry e la memorizza nella variabile weightDifference.

EditView

Questa view è responsabile della modifica delle entry esistenti. Riceve un WeightEntry e una closure updateAction da ContentView, che viene chiamata quando l’utente modifica i dati.

L’app, in sintesi, è un esempio di come si possono utilizzare le potenti funzionalità di SwiftUI e LocalAuthentication per creare un’applicazione utile e sicura. Le scelte progettuali, come l’utilizzo di UserDefaults per la persistenza dei dati e l’adozione della programmazione reattiva, rendono l’app facilmente estensibile e manutenibile.

{ 0 comments… add one }

Rispondi