我试图修改ErrorProtocol的描述输出。但是这个片段给了我无限的循环。
enum GeneralError: ErrorProtocol, CustomStringConvertible {
case NoMemory
var description: String {
return String(self).lowercased()
}
}更改为self.dynamic类型会给我一个“一般性错误”。
有什么办法可以得到公正的“名义”?不用附加条件。
发布于 2016-06-28 16:04:26
Swift: Convert enum value to String?并不完全符合你的问题,但它确实涵盖了它的核心。在您的例子中,您需要稍微修改一下:
enum Error : String, ErrorProtocol, CustomStringConvertible {
case NoMemory
var description : String {
return self.rawValue.lowercaseString
}
}这是因为枚举的默认rawValue (关联类型为String )是用例的名称。
发布于 2016-06-28 15:40:18
当您在GeneralError.description中调用GeneralError.description时,您正在使String初始化器使用您的对象(self)作为一个CustomStringConvertible来生成一个新的字符串。在内部,它通过对其调用description来实现这一点,因此递归
你到底想达到什么目的?
https://stackoverflow.com/questions/38080400
复制相似问题