2017-02-24 112 views
3

我执行尝试捕捉枚举:类型不符合协议CustomStringConvertible

enum processError: Error, CustomStringConvertible { 

     case one 
     var localizedDescription: String{ 
      return "one" 
     } 
     case two 
     var localizedDescription: String { 
      return "two" 
     } 
    } 

但我发现了以下错误:

type processError does not conform to protocol CustomStringConvertible

但是,如果我改变变量的名称在第二种情况下我没有得到错误:

enum processError: Error, CustomStringConvertible { 

    case one 
    var localizedDescription: String{ 
     return "one" 
    } 
    case two 
    var description: String { 
     return "two" 
    } 
} 

我的问题是为什么我不能有相同的名称的变种适用于所有情况?

我真的很感谢你的帮助。

+0

按⌘4,点击旁边的错误的三角形。你会看到:*协议需要属性'description' ... *,并且你不能声明两次具有相同名称的变量(*无效的重新声明... *错误) – vadian

+0

可能相关:[如何提供本地化描述和错误键入Swift?](http://stackoverflow.com/questions/39176196/how-to-provide-a-localized-description-with-an-error-type-in​​-swift)。 –

+0

@ user2924482'枚举的processError:字符串,错误{ 情况一,二 Var描述:字符串{ 回报rawValue } }' –

回答

4

的问题是,CustomStringConvertible协议需要一个属性:

var description: String 

你需要有description财产或者你会得到它不符合协议的错误。

我也建议这种做法:

enum processError: Error, CustomStringConvertible { 
    case one 
    case two 

    var description: String { 
     switch self { 
      case .one: 
       return "one" 
      case .two: 
       return "two" 
     } 
    } 
} 
+0

重写localizedDescription不工作的方式(除非你施放的错误具体的processError)在问题的上面链接比较。 –

+0

@MartinR谢谢。我删除了这部分答案。我将把它留在协议问题上。 – rmaddy

相关问题