2017-05-07 16 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

のValuesセクションを参照してください。 switch case文のパラメータしかし、私はそれを試みます。それは私がそれを受け入れるように動作するようです – zardon