swift – Alamofire 3.0 ReactiveCocoa转换
发布时间:2020-12-14 05:26:37 所属栏目:百科 来源:网络整理
导读:我在Reactive Cocoa中将旧的Alamofire 2.0转换为3.0时遇到了很多麻烦.我在sendNext和sendCompleted调用中不断收到未知标识符错误. public final class Network: Networking {private let queue = dispatch_queue_create( "Beet.BeetModel.Network.Queue",DIS
我在Reactive
Cocoa中将旧的Alamofire 2.0转换为3.0时遇到了很多麻烦.我在sendNext和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)) } } } } }
这个语法
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) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |