Ios 如何在SignalProducer上映射值和错误
如何绘制此地图Ios 如何在SignalProducer上映射值和错误,ios,swift,reactive-cocoa,reactive-cocoa-3,reactive-cocoa-4,Ios,Swift,Reactive Cocoa,Reactive Cocoa 3,Reactive Cocoa 4,如何绘制此地图 func save() -> SignalProducer<Void, NetworkError> func save()->SignalProducer 到 var saveAction:Action 我对语法有点困惑 service.save() .observeOn(QueueScheduler.mainQueueScheduler) .map<Bool>( _ in true) // ho
func save() -> SignalProducer<Void, NetworkError>
func save()->SignalProducer
到
var saveAction:Action
我对语法有点困惑
service.save()
.observeOn(QueueScheduler.mainQueueScheduler)
.map<Bool>( _ in true) // how to map void to bool
.flatMapError {
error in
// how to map to a NoError?
}
service.save()
.observeOn(QueueScheduler.mainQueueScheduler)
.map(u为true)//如何将void映射到bool
.flatMapError{
错误
//如何映射到无错误?
}
另外,在使用动作时,最佳实践应该是什么?
网络错误是否应该出现在控制器上,以便它可以在弹出的对话框中显示错误?您问了三件事,让我们逐一进行:
Void
到Bool
foo:SignalProducer
:
然后,您的func save()->SignalProducer
可能会变成:
let save: SignalProducer<Void, NetworkError> = ...
let newSave: SignalProducer<Bool, NoError> = save.map {_ in true}.flatMapError { _ in SignalProducer.empty }
let save:SignalProducer=。。。
让newSave:SignalProducer=save.map{intrue}.flatMapError{insignalproducer.empty}
最终,您必须将错误转换为可读的内容。控制器(假设我们讨论的是
UIViewController
)可以利用辅助实体将此错误转换为一个字符串或一对字符串(title+body)。如果您使用的是MVVM,即ViewModel,那么您会考虑这种转换。您会问三件事,所以让我们逐一进行:
Void
到Bool
foo:SignalProducer
:
然后,您的func save()->SignalProducer
可能会变成:
let save: SignalProducer<Void, NetworkError> = ...
let newSave: SignalProducer<Bool, NoError> = save.map {_ in true}.flatMapError { _ in SignalProducer.empty }
let save:SignalProducer=。。。
让newSave:SignalProducer=save.map{intrue}.flatMapError{insignalproducer.empty}
UIViewController
)可以利用辅助实体将此错误转换为一个字符串或一对字符串(title+body)。如果您使用的是MVVM,ViewModel,那么您可能需要进行这种转换
let bar: SignalProducer<Void, NoError> = foo.flatMapError { _ in SignalProducer.empty }
let save: SignalProducer<Void, NetworkError> = ...
let newSave: SignalProducer<Bool, NoError> = save.map {_ in true}.flatMapError { _ in SignalProducer.empty }