美文网首页
用RAC封装AFN

用RAC封装AFN

作者: _moses | 来源:发表于2017-12-28 23:48 被阅读207次
    #import <AFNetworking/AFNetworking.h>
    #import <ReactiveObjC/ReactiveObjC.h>
    
    @interface MSHTTPRequest : AFHTTPSessionManager
    
    + (instancetype _Nonnull)shareInstace;
    
    - (RACSignal * _Nonnull)POST:(NSString * _Nonnull)URLString parameters:(NSDictionary * _Nullable)parameters;
    
    @end
    
    #import "MSHTTPRequest.h"
    
    static id _instace;
    
    @implementation MSHTTPRequest
    
    + (instancetype)allocWithZone:(struct _NSZone *)zone {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _instace = [super allocWithZone:zone];
        });
        return _instace;
    }
    
    + (instancetype)shareInstace {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _instace = [[self alloc] initWithBaseURL:nil];
        });
        return _instace;
    }
    
    - (id)copyWithZone:(NSZone *)zone {
        return _instace;
    }
    
    - (RACSignal * _Nonnull)POST:(NSString * _Nonnull)URLString parameters:(NSDictionary * _Nullable)parameters {
        return [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
            [self POST:URLString parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
                
            } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
                [subscriber sendNext:responseObject];
                [subscriber sendCompleted];
            } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
                [subscriber sendError:error];
            }];
            return nil;
        }];
    }
    
    @end
    
    [[[MSHTTPRequest shareInstace] POST:@"url" parameters:nil] subscribeNext:^(id  _Nullable x) {
        NSLog(@"%@", x);
    } error:^(NSError * _Nullable error) {
        NSLog(@"%@", error);
    }];
    

    相关文章

      网友评论

          本文标题:用RAC封装AFN

          本文链接:https://www.haomeiwen.com/subject/tzpbgxtx.html