更改我的操场代码斯威夫特3,Xcode的建议将类型“错误”不符合协议“RawRepresentable”
enum Error: ErrorType {
case NotFound
}
到
enum Error: Error {
case NotFound
}
,但现在我拿到冠军错误,我不知道如何让枚举符合该协议。
更改我的操场代码斯威夫特3,Xcode的建议将类型“错误”不符合协议“RawRepresentable”
enum Error: ErrorType {
case NotFound
}
到
enum Error: Error {
case NotFound
}
,但现在我拿到冠军错误,我不知道如何让枚举符合该协议。
问题是你已经命名了你的错误类型Error
- 它与标准库Error
协议冲突(因此Swift认为你有一个循环引用)。
你可以参考斯威夫特Error
协议作为Swift.Error
为了消除歧义:
enum Error : Swift.Error {
case NotFound
}
但是,这将意味着你的模块中Error
任何未来的引用将参考您Error
类型,而不是Swift Error
协议(你将不得不再次消除歧义)。
因此,迄今为止最简单的解决方案将简单地将您的错误类型重命名为更具描述性的内容。
发生此错误是因为您“覆盖”了Error
这是一个的现有声明。所以你必须为你的“错误”enum
选择另一个(可能更具描述性的)名称。
我也有这个问题,虽然我宣布我的枚举具体名称。
原因是我使用Realm,它有Error
类,这使得Swift.Error
和RealmSwift.Error
之间的混淆。
解决方案是在声明中指定RealmSwift.Error
。
// before
enum MyError: Error { ... }
// after
enum MyError: Swift.Error { ... }
我在AVCapture会尝试这一块,它工作在斯威夫特3 +的iOS 10.使用一个NSError作为RawValue可能解决什么哈米什指的是上述关于未来的引用错误。
enum Error : Swift.Error {
typealias RawValue = NSError
case failedToAddInput
case failedToAddOutput
case failedToSetVideoOrientation
}
因此,在旧版本中,我不会已经能够说出我的枚举错误类型,但现在雨燕协议名称已更改为错误,我不能使用错误,对吧? – Shades
@Shades Yup,这是正确的 - 如果您在构建设置(将使用Swift 2.3)中将“使用传统Swift语言版本”变为“Yes”,您可以自己尝试。 – Hamish