У меня этот результат тип данных, называемый который оборачивает тип и прогрессПроблема с методом общего преобразования с использованием RxSwift
public enum <T> {
case Success(T)
case Progress(CGFloat)
}
class func rx_request(router: Router) -> Observable<<AnyObject>>
Этот AnyObject
нужно преобразовать в Mappable
структуру (ObjectMapper), таким образом, потому что есть несколько эти назначаемыми Структуры, я хотел добиться чего-то вроде этого, общая карта, что я могу использовать:
class func rx_convert<T : Mappable>(value: <AnyObject>) -> Observable<<T>> {
return Observable.create { observer in
switch value {
case .Success(let object):
guard let convertedObject = Mapper<T>().map(object) else {
observer.onError(NetworkError.IncorrectDataReturned)
return NopDisposable.instance
}
observer.on(.Next(<T>.Success(convertedObject)))
observer.on(.Completed)
case .Progress(let progress):
observer.on(.Next(<T>.Progress(progress)))
break
}
return NopDisposable.instance
}
}
кажется приведенное выше определение является неправильным, потому что это не может быть скомпилирован: Cannot explicitly specialize a generic function
.flatMapLatest({ _ in
.rx_request(Router.Pipeline)
})
.flatMapLatest({ result -> Observable<<ResponsePipeline>> in
.rx_convert<ResponsePipeline>(result)
// Cannot explicitly specialize a generic function
})
Что я здесь делаю неправильно?
Благодарим вас за разъяснение! –
@AndreiPopa, вы должны принять его ответ как правильный ответ, нажав зеленую галочку. – solidcell