【问题标题】:Swift display an error message from enum parameterSwift 显示来自枚举参数的错误消息
【发布时间】:2017-10-05 13:01:15
【问题描述】:

我有这个错误代码枚举

enum EYErrorCode: Error {
    case insufficientFunds(coinsNeeded: Int)
}

我想显示如下错误:

"Error - You need \(coinsNeeded) to perform this action"

但我不确定如何让我的错误显示coinsNeeded 参数。

我的代码如下:

static func errorForCode(code: EYErrorCode) -> EYCustomError?
{
        switch code {
          case .insufficientFunds:
            let localizedDescription = NSLocalizedString("You do not have enough cash", comment: "insufficientFunds message")
            return EYCustomError.init(localizedTitle:nil, localizedDescription: localizedDescription, code:code)
        }
}


protocol EYErrorProtocol: Error {
    var localizedTitle: String { get }
    var localizedDescription: String { get }
    var code: Int { get }
}


public struct EYCustomError: EYErrorProtocol {
    var localizedTitle: String
    var localizedDescription: String
    var code: Int

    init(localizedTitle: String?, localizedDescription: String, code: EYErrorCode) {
        self.localizedTitle = localizedTitle ?? "Error"
        self.localizedDescription = localizedDescription
        let err = (code as NSError).code
        self.code = err
    }
}

我的问题:

如何创建显示资金不足 (coinsNeeded) 参数的错误?

【问题讨论】:

    标签: swift error-handling enums


    【解决方案1】:

    对于带参数的枚举,你可以使用 switch 语句提取关联的值,像这样..

    switch code {
          case .insufficientFunds(let amount):
            let localizedDescription = NSLocalizedString("You do not have enough cash. Required amount: \(amount)", comment: "insufficientFunds message")
            return EYCustomError.init(localizedTitle:nil, localizedDescription: localizedDescription, code:code)
        }
    

    请参阅Documentation 的关联值部分

    【讨论】:

    • 我不知道我可以将参数放在 switch case 语句中。但我会尝试的。它似乎有效,所以我会接受它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多