Crea un'app SwiftUI per monitorare le tue transazioni in criptovaluta PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Crea un'app SwiftUI per monitorare le tue transazioni in criptovaluta

Crea un'app calcolatrice DCA per tenere traccia del tuo portafoglio

Crea un'app SwiftUI per monitorare le tue transazioni in criptovaluta PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.
Immagine di Steve Buissinne da Pixabay

Inizieremo creando una struttura che contenga i dati per una singola operazione.

Un'operazione è composta da un amount, un price, e un value. Tutte le operazioni sono archiviate nel file TradesModel, che effettuerà tutti i calcoli necessari per il DCA (media del costo del dollaro).

Il didSet l'osservatore della proprietà viene utilizzato in modo che trades all'array viene assegnata una nuova operazione vuota quando l'utente desidera aumentare il numero di operazioni visualizzate.

Ciò mantiene la dimensione dell'array in linea con il numero che ci aspettiamo di vedere sullo schermo, eliminando la possibilità di errori di indice fuori intervallo.

L'interfaccia avrà la forma di una tabella con tre colonne: importo, prezzo e valore. Questi si allineano opportunamente con le proprietà di un'operazione, ognuna delle quali verrà impostata utilizzando la personalizzazione TextField che sarà chiamato NumberTextField.

Prima di iniziare, dobbiamo creare una semplice riga di intestazione che ci dia un titolo per ciascuna delle nostre colonne. Non ci sarebbe altro modo per distinguere l'importo dal prezzo o dal valore se non rendessimo evidente quale sia l'uno e l'altro.

Potresti notare che l'intero HStack sopra ha l'estensione disabled modificatore impostato su true. Questo dà ciascuno TextField lo stesso aspetto degli altri nell'app, ma l'utente non può modificare queste intestazioni come desidera.

Il NumberTextField colma il divario tra a TextField, che utilizza a String per l'input e a Double, che è il formato in cui vogliamo che siano i nostri dati.

Il TextField ha una tastiera decimale, quindi la tastiera alfanumerica convenzionale non verrà visualizzata. Ciò riduce drasticamente il numero di caratteri possibili, ma non c'è ancora nulla che impedisca all'utente di inserire più punti. Questo non verrebbe convertito correttamente in a Double, quindi non vogliamo che ciò sia possibile.

Un'estensione di String fornisce una proprietà calcolata che consente di verificare facilmente se sono presenti più punti e questa viene archiviata nel file valid proprietà.

Quando l'input non è valido, il file TextField visualizzerà l'input come rosso e non tenterà di convertire il valore in a Double. Se è valido, il valore verrà impostato e rispedito al file Binding.

TotalRowView calcola la somma di tutti gli importi commerciali in modo che tu possa vedere quanto possiedi. Anche il costo totale viene calcolato e mostrato qui. Tra di loro c'è la media del costo in dollari, che viene calcolata dividendo il valore totale per l'importo totale. Ciascuno di questi valori viene visualizzato come una stringa costante in a TextField che non possono essere modificati, in modo che abbiano lo stesso stile del resto dell'app.

TradeQuantityView ti permette di controllare quante righe ci sono. Poiché ogni riga rappresenta uno scambio, ti consigliamo di aggiungere nuovi scambi man mano che li effettui. Questa riga è semplicemente a Stepper che mostra il numero di operazioni.

Purtroppo Stepper richiede un intervallo chiuso di valori possibili, quindi un numero massimo di operazioni deve essere codificato. Questo numero massimo può essere qualsiasi cosa tu voglia, ma è impossibile specificare un intervallo senza un valore massimo.

In un certo senso questa è la visualizzazione più importante, poiché consente di inserire i dati affinché venga effettuato il calcolo del costo medio in dollari. Quando l'importo o il prezzo TextField viene modificato, il onChange la chiusura chiama il setValue funzione.

Questo calcola nuovamente il valore, che è semplicemente una moltiplicazione degli altri due numeri. L'operazione viene quindi aggiornata nell'array trade, che viene passato come a @Binding proprietà. Viene effettuato un controllo per garantire che l'indice previsto esista nell'array, impedendo un errore di indice fuori intervallo.

Tuttavia, poiché aggiornare un'operazione che non esiste nell'array è un comportamento inaspettato, ho comunque aggiunto un file fatalError questo spiega perché questo è uno stato di fallimento.

L'app principale è semplicemente una combinazione di tutte le righe che sono state create finora all'interno di una SwiftUI Form. Questo gli conferisce un aspetto molto simile all'app Impostazioni per iOS e riempirà automaticamente lo schermo di qualsiasi dispositivo e scorrerà quando ci sono troppe righe per adattarsi allo schermo.

Alle visualizzazioni viene trasmesso solo ciò di cui hanno bisogno, ad esempio il numero totale di operazioni TradeQuantityView e l'importo totale e il valore per TotalRowView.

A ForEach viene utilizzato per mostrare un'operazione per ogni numero fino al numero totale di operazioni selezionate da TradeQuantityViewe l'indice viene passato in modo che l'array possa essere aggiornato quando vengono apportate modifiche.

Ecco come dovrebbe apparire:

Source: https://betterprogramming.pub/build-a-swiftui-app-for-tracking-your-cryptocurrency-trades-f81e4c83ad38?source=rss——-8—————–cryptocurrency

Timestamp:

Di più da Medio