【问题标题】:Reactive cocoa attemptmap return type反应性可可尝试图返回类型
【发布时间】:2016-11-14 05:29:45
【问题描述】:

我想在 SignalProducerType 上创建扩展,如下所示。

extension SignalProducerType{
    func mapR() -> SignalProducer<[String:AnyObject], XError> {
            return attemptMap { (value: [String:AnyObject]) -> Result<[String:AnyObject], XError> in
                return Result(value: ["1":1])
            }
        }
}

XError 被定义为 ErrorType

public enum XError: ErrorType{
    case Invalid
    case Unsuccessful
}

但这不会编译并且错误是。

'attemptMap' 产生'SignalProducer',而不是 预期的上下文结果类型 'Result' (又名“结果,XError>”)

【问题讨论】:

  • 您没有从 mapR 方法返回预期类型。如果返回 Result,那么应该没问题,因为尝试映射返回该类型。

标签: swift swift2 reactive-cocoa reactive-cocoa-3 reactive-cocoa-4


【解决方案1】:

您正在扩展具有通用关联类型 ValueError 的 SignalProducerType,这意味着 self 是通用类型,例如SignalProducer&lt;Value, Error&gt;。所以你不能用具体的值类型 [String:AnyObject] 和具体的错误类型 XError 来调用 attempMap。

将第一行extension SignalProducerType替换为

extension SignalProducerType where Value == [String:AnyObject], Error == XError

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 1970-01-01
    • 2020-09-14
    • 2019-06-02
    • 2012-06-14
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多