2016-06-28 65 views
1

我試圖修改ErrorProtocol的描述輸出。但是這個片段給了我無限循環。Swift:在self.description中獲取self.description

enum GeneralError: ErrorProtocol, CustomStringConvertible { 
     case NoMemory 

     var description: String { 
      return String(self).lowercased() 
     } 
} 

更改爲self.dynamic類型給我一個「常見錯誤」。

有沒有辦法如何獲得「nomemory」?沒有使用條件。

+0

我想你會最終需要這個條件。 – keithbhunter

回答

4

Swift: Convert enum value to String?與您的問題並不完全匹配,但它確實涵蓋了它的內涵。在你的情況,你會想改變它一點點:

enum Error : String, ErrorProtocol, CustomStringConvertible { 
    case NoMemory 

    var description : String { 
     return self.rawValue.lowercaseString 
    } 
} 

這工作,因爲,枚舉情況下,默認rawValue在相關類型爲String是這樣的名稱。

0

當你調用GeneralError.descriptionString(self),你正在做的String初始化使用對象(self)作爲CustomStringConvertible作出新的字符串。在內部,它通過調用description來做到這一點,因此遞歸

你究竟想要達到什麼目的?

+0

僅用於以更易讀的形式打印錯誤名稱 – pravdomil

+1

這解釋了「爲什麼」,但我詢問「什麼」 – Alexander