gpt4 book ai didi

swift2 - 类型 'Error' 约束为非协议(protocol)类型,即使类型是协议(protocol)

转载 作者:行者123 更新时间:2023-12-01 14:19:36 30 4
gpt4 key购买 nike

我尝试将 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 {
}

既然它是一个协议(protocol),那么为什么编译器会提示它是一个非协议(protocol)类型,知道吗?

最佳答案

你是对的,但是 MyError 不是协议(protocol),错误就是这样说的。

当您使用此语法时:

extension SignalType where Error: MyError

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

extension SignalType where Error == MyError

其中显示:SignalType 的扩展,其Error MyError

关于swift2 - 类型 'Error' 约束为非协议(protocol)类型,即使类型是协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375755/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com