Ich versuche, meine API SignalProducer in eine Enumeration zu transformieren, so bekomme ich Laden, fehlgeschlagen und geladenen Staaten. Enum ist:Reactive Cocoa SignalProducer in Enum transformieren
enum DataLoadState<DataType>{
case Loading
case Failed
case Loaded(DataType)
}
es tun ich meine SignalProducer zu einem NoError Produzenten verwandeln und beginnen mit Ladezustand:
extension SignalProducerType{
func materializeToLoadState() -> SignalProducer<DataLoadState<Value>,NoError>{
let producer = self
.map(DataLoadState.Loaded)
.startWithValue(DataLoadState.Loading)
return producer.ignoreErrors(replacementValue:DataLoadState<Value>.Failed)
}
}
extension SignalProducerType {
func startWithValue(value:Value)->SignalProducer<Value,Error>{
return SignalProducer(value:value).concat(self.producer)
}
public func ignoreErrors(replacementValue replacementValue: Self.Value? = nil) -> SignalProducer<Self.Value, NoError> {
return self.flatMapError { error in
return replacementValue.map(SignalProducer.init) ?? .empty
}
}
}
Es funktioniert, aber ich möchte nicht, Fehler ignorieren, sondern ich will in dem ausgefallenen Fall sind es:
enum DataLoadState<DataType>{
case Loading
case Failed(APIError?)
case Loaded(DataType)
}
Jede Idee, wie kann ich flatMapError (wie in ignoreError) so Fehler wie DataLoadState.Failed (Fehler) ausgelöst werden, anstatt ignoriert zu werden? Wenn der Fehler nicht angezeigt wird, kann der Fehler nur Null sein. Ist es überhaupt möglich?