我想在 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' produces 'SignalProducer', not the expected contextual result type 'Result<[String : AnyObject], XError>' (aka 'Result, XError>')
最佳答案
您正在扩展具有通用关联类型的 SignalProducerType Value
和Error
,这意味着 self 是一个泛型类型,例如SignalProducer<Value, Error>
。因此,您不能使用具体值类型 [String:AnyObject] 和具体错误类型 XError 调用 attempMap。
替换第一行extension SignalProducerType
与
extension SignalProducerType where Value == [String:AnyObject], Error == XError
关于swift - 响应式(Reactive) cocoa 尝试图返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38320976/