如何将 enum/switch 与特定案例 swiftUI 的 API 值连接起来
How to connect enum/switch with an API value for a specific case swiftUI
我有一个货币转换器计算器应用程序,其中的数据是通过 API 获取的。我正在尝试通过枚举和开关转换输入的数据,但不幸的是,我不确定是什么错误。请有人可以帮助我了解我该怎么做吗?
您可能会在下面的项目中找到我的 GitHub Link
https://github.com/Chokaaaa/CurMe
这是我的 Fetch 文件
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()
}
}
您可能会在下面找到一个枚举,我在其中使用带有来自自定义数字键盘(如计算器)的 return 输入并乘以虚拟值的开关。我想我需要在开关盒中修理一些东西。请伙计们帮助我!我在挣扎。
在下面,您可能会找到 enum/switch
的代码
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)
}
}
}
在您的情况下,不建议使用 store 属性 使用枚举,因此最好避免使用它或使用 static 属性 的枚举。
一定会解决您的问题。
我有一个货币转换器计算器应用程序,其中的数据是通过 API 获取的。我正在尝试通过枚举和开关转换输入的数据,但不幸的是,我不确定是什么错误。请有人可以帮助我了解我该怎么做吗?
您可能会在下面的项目中找到我的 GitHub Link
https://github.com/Chokaaaa/CurMe
这是我的 Fetch 文件
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()
}
}
您可能会在下面找到一个枚举,我在其中使用带有来自自定义数字键盘(如计算器)的 return 输入并乘以虚拟值的开关。我想我需要在开关盒中修理一些东西。请伙计们帮助我!我在挣扎。
在下面,您可能会找到 enum/switch
的代码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)
}
}
}
在您的情况下,不建议使用 store 属性 使用枚举,因此最好避免使用它或使用 static 属性 的枚举。
一定会解决您的问题。