首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输入“Error”不符合“RawRepresentable”协议

输入“Error”不符合“RawRepresentable”协议
EN

Stack Overflow用户
提问于 2016-09-10 21:26:48
回答 5查看 10.7K关注 0票数 12

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

代码语言:javascript
复制
enum Error: ErrorType {
    case NotFound
}

代码语言:javascript
复制
enum Error: Error {
    case NotFound
}

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-09-10 21:40:50

问题在于,您已经将错误类型命名为Error --这与标准库Error协议相冲突(因此Swift认为您有一个循环引用)。

为了消除歧义,可以将Swift Error协议称为Swift.Error

代码语言:javascript
复制
enum Error : Swift.Error {
    case NotFound
}

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

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

票数 34
EN

Stack Overflow用户

发布于 2016-09-10 21:39:08

发生此错误是因为您正在“重写”Error的现有声明(即protocol )。因此,您必须为您的"Error“enum选择另一个名称(可能更具有描述性)。

票数 2
EN

Stack Overflow用户

发布于 2016-09-27 03:31:51

我也遇到了这个问题,尽管我用具体的名字声明了我的名字。

原因是我使用的是领域,它有Error类,这使得Swift.ErrorRealmSwift.Error之间的混淆。

解决方案是在声明中指定RealmSwift.Error

代码语言:javascript
复制
// before
enum MyError: Error { ... }
// after
enum MyError: Swift.Error { ... }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39430710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档