Alamofire 3.0 ReactiveCocoa Conversion

I have many problems converting old Alamofire 2.0 to 3.0 into ReactiveCocoa . I keep getting an unknown identifier error when sendNext and sendCompleted .

 public final class Network: Networking { private let queue = dispatch_queue_create( "Beet.BeetModel.Network.Queue", DISPATCH_QUEUE_SERIAL) public init() { } public func requestJSON(url: String, parameters: [String : AnyObject]?) -> SignalProducer<AnyObject, NetworkError> { return SignalProducer { observer, disposable in let serializer = Alamofire.Request.JSONResponseSerializer() Alamofire.request(.GET, url, parameters: parameters) .response(queue: self.queue, responseSerializer: serializer) { _, _, result in switch result { case .Success(let value): sendNext(observer, value) sendCompleted(observer) case .Failure(_, let error): sendError(observer, NetworkError(error: error)) } } } } } 
+7
swift alamofire reactive-cocoa
source share
2 answers

This syntax has been changed to 4.0 alpha 2 . Observer now its own type, so the old functions sendNext , sendError , etc. are no longer free features:

 switch result { case .Success(let value): observer.sendNext(value) observer.sendCompleted() case .Failure(_, let error): observer.sendError(NetworkError(error: error)) } 

One thing that I would add to your decision is to provide a one-time tool so that you can cancel requests if necessary to save resources:

 return SignalProducer { observer, disposable in let serializer = Alamofire.Request.JSONResponseSerializer() let request = Alamofire.request(.GET, url, parameters: parameters) request.response(queue: self.queue, responseSerializer: serializer) { _, _, result in switch result { case .Success(let value): observer.sendNext(value) observer.sendCompleted() case .Failure(_, let error): observer.sendError(NetworkError(error: error)) } } disposable.addDisposable(request.cancel) } 
+11
source share

Try observer.sendNext(value) and ditto for sendCompleted and sendError

+2
source share

All Articles