美文网首页
链式语法学习

链式语法学习

作者: 三十一_iOS | 来源:发表于2017-05-03 15:37 被阅读33次

    为什么要写一个链式语法的库

    最近看了 JHChainableAnimationsMasonry 觉得链式语法写起来用的好爽,就萌生了使用 链式 编写最近使用的一个库,然后又看到了 sindri的小巢 的这篇文章 iOS开发-链式实现数据源

    在文章的最后,作者展示了这样的一段代码:

    Get(Component(@"user/getUserInfo", nil)).then(^(NSDictionary * result) {
        /// request success
    }).failed(^(NSError * error) {
        /// request failed
    }).start();
    

    好了,就写一个网路的链式调用库,当做一次链式语法的实践。

    具体如何实现

    SYrequest.png

    提供调用的方法:

    + (apiAddress )requestURLString;
    + (apiAddress)Get;
    + (apiAddress)Post;
    - (apiAddress )requestURLString;
    - (apiAddress)Get;
    - (apiAddress)Post;
    
    - (head)addHeadersy;
    - (params)addParameters;
    - (body)addBody;
    - (httpMethod)httpMethod;
    - (parameterEncoding)addParameterEncoding;
    
    - (startRequest)start;
    - (cancelRequest)cancel;
    - (suspendRequest)suspend;
    - (resumeRequest)resume;
    
    
    - (response)response;
    
    
    - (void)clearCompletionBlock;
    

    使用示例:

        SYRequest *requset = [[SYRequest alloc] init];
        requset.requestURLString(@"https://www.metaweather.com/api/location/search/")
                .httpMethod(SYHTTPMethod_GET)
                .addParameters(@{@"query":@"sa"})
                .start(^(BOOL sucess,id responseData,NSError *error){
                    NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:nil];
                    NSLog(@"jsonDic = %@",jsonDic);
                });
    

    或者:

        SYRequest.requestURLString(@"https://www.metaweather.com/api/location/search/")
        .httpMethod(SYHTTPMethod_GET)
        .addParameters(@{@"query":@"sa"})
        .start(^(BOOL sucess,id responseData,NSError *error){
            NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:nil];
            NSLog(@"jsonDic = %@",jsonDic);
        });
    

    具体的就没什么说的,实现起来就是这样: 方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值),只要按照这个条件写,就可以写出一个自己的链式库。

    具体代码地址 SYRequest

    相关文章

      网友评论

          本文标题:链式语法学习

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