Zgradite aplikacijo SwiftUI za sledenje trgovanju s kriptovalutami PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Zgradite aplikacijo SwiftUI za sledenje trgovanju s kriptovalutami

Ustvarite aplikacijo DCA kalkulator za sledenje svojemu portfelju

Zgradite aplikacijo SwiftUI za sledenje trgovanju s kriptovalutami PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
Slike, ki jih Steve buissinne iz pixabay

Začeli bomo z ustvarjanjem strukture, ki vsebuje podatke za posamezno trgovino.

Trgovina je sestavljena iz amountA priceIn value. Vsi posli so shranjeni v TradesModel, ki bo opravil vse potrebne izračune za DCA (povprečje stroškov v dolarjih).

O didSet opazovalec lastnosti se uporablja tako, da trades array dobi novo prazno trgovanje, ko želi uporabnik povečati število prikazanih trgovanj.

To ohranja velikost matrike v skladu s številom, ki ga pričakujemo na zaslonu, in odpravlja možnost napak indeksa izven obsega.

Vmesnik bo v obliki tabele s tremi stolpci: znesek, cena in vrednost. Ti so ustrezno usklajeni z lastnostmi trgovine, od katerih bo vsaka nastavljena po meri TextField ki se bo imenoval NumberTextField.

Preden začnemo s tem, moramo ustvariti preprosto vrstico glave, ki nam bo dala naslov za vsakega od naših stolpcev. Ne bi bilo drugega načina za razlikovanje zneska od cene ali vrednosti, če ne bi bilo jasno, kateri je kateri.

Morda boste opazili, da ima celoten HStack zgoraj disabled modifikator nastavljen na true. To daje vsakemu TextField enak videz kot drugi v aplikaciji, vendar uporabnik teh glav ne more urejati, kar hoče.

O NumberTextField premosti vrzel med a TextField, ki uporablja a String za vnos in a Double, ki je oblika, v kateri želimo, da so naši podatki.

O TextField ima decimalno tipkovnico, zato običajna alfanumerična tipkovnica ne bo prikazana. To dramatično zmanjša število možnih znakov, vendar še vedno nič ne preprečuje uporabniku, da vnese več pik. To se ne bi uspešno pretvorilo v a Double, zato ne želimo, da bi bilo to mogoče.

Razširitev String zagotavlja izračunano lastnost, ki vam omogoča enostavno preverjanje, ali obstaja več pik, in to je shranjeno v valid nepremičnine.

Ko je vnos neveljaven, se TextField bo vnos prikazal rdeče in ne bo poskušal pretvoriti vrednosti v a Double. Če je veljavna, bo vrednost nastavljena in poslana nazaj v Binding.

TotalRowView izračuna vsoto vseh zneskov trgovanja, tako da lahko vidite, koliko imate. Tukaj je izračunan in prikazan tudi skupni strošek. Med njimi je povprečje stroškov v dolarjih, ki se izračuna tako, da se skupna vrednost deli s skupnim zneskom. Vsaka od teh vrednosti je prikazana kot stalni niz v a TextField ki jih ni mogoče urejati, tako da imajo enak slog kot preostali del aplikacije.

TradeQuantityView omogoča nadzor nad številom vrstic. Ker vsaka vrstica predstavlja trgovanje, boste želeli dodajati nove posle, ko jih sklepate. Ta vrstica je preprosto a Stepper ki prikazuje število poslov.

Na žalost Stepper zahteva zaprt obseg možnih vrednosti, zato mora biti največje število poslov trdo kodirano. To največje število je lahko karkoli želite, vendar je nemogoče določiti obseg brez največje vrednosti.

Na nek način je to najpomembnejši pogled, saj vam omogoča vnos podatkov za izračun povprečne cene v dolarjih. Ko znesek ali cena TextField je urejeno, onChange zaprtje kliče setValue Funkcija.

To znova izračuna vrednost, ki je preprosto množenje drugih dveh števil. Posel se nato posodobi v matriki poslov, ki se posreduje kot a @Binding premoženje. Izvede se preverjanje, da se zagotovi, da pričakovani indeks obstaja v matriki, s čimer se prepreči napaka indeksa izven obsega.

Ker pa je posodabljanje posla, ki ne obstaja v nizu, nepričakovano vedenje, sem vseeno dodal fatalError to pojasnjuje, zakaj je to stanje neuspeha.

Glavna aplikacija je preprosto kombinacija vseh vrstic, ki so bile do sedaj ustvarjene v SwiftUI Form. To ji daje videz, podoben aplikaciji Nastavitve za iOS, in samodejno zapolni zaslon katere koli naprave in se pomika, ko je preveč vrstic, da bi se prilegale na zaslon.

Ogledom se posreduje samo tisto, kar potrebujejo, na primer skupno število poslov za TradeQuantityView ter skupni znesek in vrednost za TotalRowView.

A ForEach se uporablja za prikaz ene trgovine za vsako število do skupnega števila poslov, ki jih je izbral TradeQuantityView, in indeks se posreduje, tako da se lahko matrika posodobi, ko se izvedejo spremembe.

Takole bi moralo izgledati:

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

Časovni žig:

Več od srednje