类型'错误'不符合协议'RawRepresentable'

Sha*_*des 10 swift rawrepresentable

将我的游乐场代码更改为Swift 3,Xcode建议更改

enum Error: ErrorType {
    case NotFound
}
Run Code Online (Sandbox Code Playgroud)

enum Error: Error {
    case NotFound
}
Run Code Online (Sandbox Code Playgroud)

但现在我得到标题错误,我不知道如何使枚举符合该协议.

Ham*_*ish 30

问题是你已经命名了你的错误类型Error- 它与标准库Error协议冲突(因此Swift认为你有一个循环引用).

你可以参考Swift Error协议,Swift.Error以消除歧义:

enum Error : Swift.Error {
    case NotFound
}
Run Code Online (Sandbox Code Playgroud)

但这意味着Error您模块中的任何未来引用都将引用您的 Error类型,而不是Swift Error协议(您必须再次消除歧义).

因此,到目前为止最简单的解决方案是将错误类型重命名为更具描述性的内容.

  • @Shades Yup,这是正确的 - 如果您在构建设置(将使用Swift 2.3)中将"使用Legacy Swift语言版本"变为"是",您可以自己尝试. (2认同)