【问题标题】:How to connect enum/switch with an API value for a specific case swiftUI如何将枚举/开关与特定案例 swiftUI 的 API 值连接起来
【发布时间】:2021-09-15 22:39:03
【问题描述】:

我有一个货币转换器计算器应用程序,通过 API 获取数据。我正在尝试通过枚举和开关转换输入的数据,但不幸的是,我不确定是什么错误。请问有人可以帮我理解我该怎么做吗?

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

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()
    
}

}

您可能会在下面找到一个枚举,其中我使用了一个开关,该开关从自定义数字键盘(如计算器)返回输入并乘以虚拟值。我想我需要在开关盒中修复一些东西。请大家帮帮我!!我在挣扎。

下面,您可能会找到枚举/开关的代码

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)
        }
    
}
}

【问题讨论】:

    标签: ios api enums switch-statement case


    【解决方案1】:

    在您的情况下,store property 不建议使用 enum,因此最好避免使用 enum 或使用 enum 的 static property

    肯定会解决你的问题。

    【讨论】:

    • 非常感谢您确实避免使用枚举确实对我的查询有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多