Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – Alamofire 3.0 ReactiveCocoa转换大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我在Reactive Cocoa中将旧的Alamofire 2.0转换为3.0时遇到了很多麻烦.我在sendNext和sendCompleted调用中不断收到未知标识符错误. public final class Network: Networking { private let queue = dispatch_queue_create( "beet.beetModel.Network.Queu
我在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)
}

大佬总结

以上是大佬教程为你收集整理的swift – Alamofire 3.0 ReactiveCocoa转换全部内容,希望文章能够帮你解决swift – Alamofire 3.0 ReactiveCocoa转换所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。