我尝试将SignalType从ReactiveCocoa扩展到一个导致约束错误的地方到自定义ErrorType,代码看起来像这样
enum MyError: ErrorType {
// .. cases
}
extension SignalType where Error: MyError {
// my exetensions her
}
但我一直得到像这样的错误
Type 'Error' constrained to non-protocol type 'MyError'
如果你看一下ErrorType
定义
public protocol ErrorType {
}
因为它是一个协议,那么为什么编译器抱怨它是non-protocol
类型,任何想法?
答案 0 :(得分:5)
你是对的,但是MyError
不是协议,这就是错误所说的。
使用此语法时:
extension SignalType where Error: MyError
您说的是:SignalType
符合的任何Error
的扩展名为MyError
。但那是不可能的。你需要的是:
extension SignalType where Error == MyError
其中包含:SignalType
Error
的任何MyError
的附加信息。