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)) } } }}}这个语法 changed in
4.0 alpha 2
. Observer现在是它自己的类型,所以旧函数sendNext,sendError等不再是自由函数: switch result {case .Success(let value): observer.sendNext(value) observer.sendCompleted()case .Failure(_,let error): observer.sendError(NetworkError(error: error))}
我要为您的解决方案添加的一件事是提供一次性使用,以便在需要时可以取消请求,以节省资源:
return SignalProducer { observer,disposable in let serializer = Alamofire.Request.JsONResponseSerializer() let request = Alamofire.request(.GET,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)}总结
以上是内存溢出为你收集整理的swift – Alamofire 3.0 ReactiveCocoa转换全部内容,希望文章能够帮你解决swift – Alamofire 3.0 ReactiveCocoa转换所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)