类型“错误”限制为非协议类型,即使类型是协议

时间:2016-02-13 03:32:43

标签: swift2 reactive-cocoa

我尝试将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类型,任何想法?

1 个答案:

答案 0 :(得分:5)

你是对的,但是MyError不是协议,这就是错误所说的。

使用此语法时:

extension SignalType where Error: MyError

您说的是:SignalType 符合的任何Error的扩展名为MyError。但那是不可能的。你需要的是:

extension SignalType where Error == MyError

其中包含:SignalType Error的任何MyError的附加信息。

相关问题