如何将enum/switch与特定案例swiftUI的API值连接



我有一个货币转换器计算器应用程序,其中数据是通过API获取的。我试图通过枚举和开关转换输入的数据,但不幸的是,我不确定错误是什么。有人能帮我理解我该怎么办吗?

你可以在下面找到我的项目GitHub链接

https://github.com/Chokaaaa/CurMe

这是我的提取文件

import SwiftUI
class FetchData: ObservableObject {
@Published var coversionData: [Currency] = []
@Published var baseCode = "USD"
init() {
fetch()
}
func fetch() {

let url = "https://open.exchangerate-api.com/v6/latest?base=(baseCode)"

let session = URLSession(configuration: .default)
session.dataTask(with: URL(string: url)!) { data, _, _ in

guard let JSONData = data else {return}

do {
let conversion = try JSONDecoder().decode(Conversion.self, from: JSONData)

DispatchQueue.main.async {
self.coversionData = conversion.rates.compactMap({ (key,value) -> Currency? in
return Currency(currencyName: key, currencyValue: value)
})
.filter({ Currency in
Currency.currencyName == self.filteredCurrency
})
}
}
catch {
print(error)
}
}
.resume()
}
func updateData(baseCode: String) {

self.baseCode = baseCode

self.coversionData.removeAll()
fetch()

}
}

下面你可能会发现一个枚举,我使用一个开关来返回自定义数字键盘(像计算器(的输入,并乘以伪值。我想我需要修理一下开关箱里的东西。请大家帮帮我!!我在挣扎。

Bellow,你可能会找到枚举/开关的代码

import SwiftUI
struct CurrencyView: View {
@StateObject var viewModel = FetchData()

enum currencyChoice {
case Kazakhstan, Rubles, Usa

func image() -> Image {
switch self {

case .Kazakhstan:  return Image("kz")

case .Rubles:      return Image("rub")

case .Usa:         return Image("usa")

}
}

func operation(_ input: Double) -> Double {
switch self {
case .Kazakhstan: return (input * 2)
case .Rubles: return (input * 3)
case .Usa: return (input * 5)

}
}

}
var function : currencyChoice
@Binding var state : CalculationState
var body: some View {



return function.image()
.resizable()
.scaledToFill()
.frame(width: 80, height: 80)
.cornerRadius(40)
.onTapGesture {
state.currentNumber = function.operation(state.currentNumber)
}

}
}

在您的情况下,不建议使用存储属性的enum,因此最好避免使用它或使用enum的

静态属性它肯定会解决你的问题。

相关内容

  • 没有找到相关文章

最新更新