将我的操场代码改为Swift 3,Xcode建议更改
enum Error: ErrorType {
case NotFound
}至
enum Error: Error {
case NotFound
}但现在我得到了标题错误,我不知道如何使枚举符合该协议。
发布于 2016-09-10 21:40:50
问题在于,您已经将错误类型命名为Error --这与标准库Error协议相冲突(因此Swift认为您有一个循环引用)。
为了消除歧义,可以将Swift Error协议称为Swift.Error:
enum Error : Swift.Error {
case NotFound
}但这将意味着模块中对Error的任何未来引用都将引用您的Error类型,而不是Swift Error协议(您将不得不再次消除歧义)。
因此,到目前为止,最简单的解决方案是简单地将错误类型重命名为更具描述性的内容。
发布于 2016-09-10 21:39:08
发生此错误是因为您正在“重写”Error的现有声明(即protocol )。因此,您必须为您的"Error“enum选择另一个名称(可能更具有描述性)。
发布于 2016-09-27 03:31:51
我也遇到了这个问题,尽管我用具体的名字声明了我的名字。
原因是我使用的是领域,它有Error类,这使得Swift.Error和RealmSwift.Error之间的混淆。
解决方案是在声明中指定RealmSwift.Error。
// before
enum MyError: Error { ... }
// after
enum MyError: Swift.Error { ... }https://stackoverflow.com/questions/39430710
复制相似问题