Reactive Cocoa - Konvertieren bestimmter Signalwerte in Fehler oder abgeschlossen

8

Vielleicht kämpfe ich immer noch an der reaktiven Lernkurve, aber es fällt mir schwer herauszufinden, wie man eine nicht reaktive Klasse mit dem Rest meines reaktiven Codes verbindet. Ich verwende eine Kategorie, um die nicht reaktive Klasse zu erweitern.

Die Eigenschaft ist nur eine Enum, die den aktuellen Status einer Netzwerkaktion darstellt, wie Neu, Eingereicht, Verarbeitung und Abgeschlossen. Im Moment habe ich folgende Methode in meiner Kategorie geschrieben:

%Vor%

Wenn jedoch Statusübergänge von Verarbeitung - & gt; Abgeschlossen oder von jedem Status zu fehlerhaft Ich möchte, dass dieses Signal Completed oder Error statt Next Value sendet. Wie kann ich dies in einer Kategorie erreichen? Ich möchte etwas tun wie:

%Vor%

edit: Ich habe mir den GHAPIDemo angesehen und folgendes gefunden:

%Vor%

Ich bin nicht 100% sicher, dass dies der richtige Weg ist, aber es scheint zu funktionieren.

    
mjn12 13.09.2013, 14:03
quelle

1 Antwort

11

Wenn Sie Werte → Signal-Ereignisse zuordnen möchten, sollten Sie anstelle von Werten → Werten -flattenMap: verwenden, um ein Signal entsprechend dem jeweiligen Eingabewert zurückzugeben. Dann, wie die "flatten" im Namen impliziert, werden sie zu einem resultierenden Signal kombiniert.

Allerdings ist dieser Fall ein wenig anders, weil Sie das Signal beenden möchten, sobald Sie den Complete -Wert erhalten. Wir verwenden -takeUntilBlock: , um diesen Teil darzustellen.

Der resultierende Code sieht ungefähr so ​​aus:

%Vor%

(Ich habe RACObserve verwendet, weil ReactiveCocoa 2.0 jetzt das ist nur unterstützte Version, aber Sie können RACAble verwenden, bis Sie zum Upgrade bereit sind.)

In der Regel sollten Sie vermeiden Themen, wenn möglich , da sie Code statusfähiger machen und Faulheit reduzieren.

    
Justin Spahr-Summers 13.09.2013 17:53
quelle

Tags und Links