2017-05-07 79 views
0

我有这样的错误代码枚举斯威夫特显示从枚举参数的错误消息

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)参数错误?

回答

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

+0

部分我不知道我可以把提取相关的值参数在switch case语句中。但我会尝试。它似乎工作,所以我会接受它 – zardon