类型 'Error' 不符合协议 'RawRepresentable'
Type 'Error' does not conform to protocol 'RawRepresentable'
将我的游乐场代码更改为 Swift 3,Xcode 建议更改
enum Error: ErrorType {
case NotFound
}
到
enum Error: Error {
case NotFound
}
但现在我得到标题错误,我不知道如何让枚举符合该协议。
发生此错误是因为您 "overriding" 现有的 Error
声明是 protocol
。因此,您必须为 "Error" enum
.
选择另一个(可能更具描述性的)名称
问题是您将错误类型命名为 Error
– 这与标准库 Error
协议冲突(因此 Swift 认为您有一个循环引用) .
您可以将 Swift Error
协议称为 Swift.Error
以消除歧义:
enum Error : Swift.Error {
case NotFound
}
但这意味着以后在您的模块中对 Error
的任何引用都将引用 您的 Error
类型,而不是 Swift Error
协议(你必须再次消除歧义)。
因此,迄今为止最简单的解决方案就是将您的错误类型重命名为更具描述性的内容。
我也遇到了这个问题,尽管我用特定的名称声明了我的枚举。
原因是我正在使用Realm,它有Error
class,这使得Swift.Error
和RealmSwift.Error
之间的混淆。
解决方案是在声明中指定 RealmSwift.Error
。
// before
enum MyError: Error { ... }
// after
enum MyError: Swift.Error { ... }
我在 AVCapture 会话中尝试了这个块,它在 Swift 3 + iOS 10 中工作。使用 NSError 作为 RawValue 可能会解决 Hamish 在上面提到的关于未来对 Error 的引用.
enum Error : Swift.Error {
typealias RawValue = NSError
case failedToAddInput
case failedToAddOutput
case failedToSetVideoOrientation
}
我收到此错误是因为我忘记将 import Foundation
放在文件的顶部。只是分享以防对其他人有帮助。
将我的游乐场代码更改为 Swift 3,Xcode 建议更改
enum Error: ErrorType {
case NotFound
}
到
enum Error: Error {
case NotFound
}
但现在我得到标题错误,我不知道如何让枚举符合该协议。
发生此错误是因为您 "overriding" 现有的 Error
声明是 protocol
。因此,您必须为 "Error" enum
.
问题是您将错误类型命名为 Error
– 这与标准库 Error
协议冲突(因此 Swift 认为您有一个循环引用) .
您可以将 Swift Error
协议称为 Swift.Error
以消除歧义:
enum Error : Swift.Error {
case NotFound
}
但这意味着以后在您的模块中对 Error
的任何引用都将引用 您的 Error
类型,而不是 Swift Error
协议(你必须再次消除歧义)。
因此,迄今为止最简单的解决方案就是将您的错误类型重命名为更具描述性的内容。
我也遇到了这个问题,尽管我用特定的名称声明了我的枚举。
原因是我正在使用Realm,它有Error
class,这使得Swift.Error
和RealmSwift.Error
之间的混淆。
解决方案是在声明中指定 RealmSwift.Error
。
// before
enum MyError: Error { ... }
// after
enum MyError: Swift.Error { ... }
我在 AVCapture 会话中尝试了这个块,它在 Swift 3 + iOS 10 中工作。使用 NSError 作为 RawValue 可能会解决 Hamish 在上面提到的关于未来对 Error 的引用.
enum Error : Swift.Error {
typealias RawValue = NSError
case failedToAddInput
case failedToAddOutput
case failedToSetVideoOrientation
}
我收到此错误是因为我忘记将 import Foundation
放在文件的顶部。只是分享以防对其他人有帮助。