【问题标题】:Type 'Error' constrained to non-protocol type even the type is a protocol即使类型是协议,类型“错误”也被限制为非协议类型
【发布时间】:2016-02-13 03:32:42
【问题描述】:

我尝试将 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 类型,知道吗?

【问题讨论】:

    标签: swift2 reactive-cocoa


    【解决方案1】:

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

    当你使用这个语法时:

    extension SignalType where Error: MyError
    

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

    extension SignalType where Error == MyError
    

    其内容为:任何SignalType 的扩展名,其Error MyError

    【讨论】:

    • 是的,你是对的,谢谢。顺便说一句,我修正了我的错字,MyErrorError 应该改为 MyError
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多