美文网首页
链式语法学习

链式语法学习

作者: 三十一_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

相关文章

  • Objective-C实现链式编程语法(DSL)

    Objective-C实现链式编程语法(DSL) Objective-C实现链式编程语法(DSL)

  • 第一篇:链式语法实现分析

    引言 第三方自动布局框架 Masonry 的出现,是链式语法的鼻祖,也让我们见识到链式语法的魅力! 那么链式语法是...

  • 链式语法学习

    为什么要写一个链式语法的库 最近看了 JHChainableAnimations 和 Masonry 觉得链式语法...

  • Underscore.js 源码解读之链式语法

    链式语法写法 我们调用多个 Underscore 的方法。可能会这么写: 用 Underscore 的链式语法来简...

  • Objective-C 链式编程简单实现

    链式编程 链式编程,其实就是通过.点语法将多行代码链接成一句代码,书写简洁、可读性好,但代码语法苦涩难懂。关于链式...

  • 链式语法

    masonry里面自动布局使用的.top().bottom();就是链式语法 (BaseViewControlle...

  • 链式语法

    谈到链式编程,那Masonry几乎就是最经典的代表: make.top.equalTo(self.view).of...

  • Swift链式调用的安全性

    文中引用到的:SnapKitAlamofireBees 链式语法在开发很常见。iOS上的许多开源库都使用了链式语法...

  • 在Objective-C中实现链式语法

    其他语言比如 Lua, 实现链式语法很容易。但在 Objective-C 中,如何实现链式语法呢? 注:这里讨论的...

  • 利用block实现简单链式语法

    接触到Masonry这一框架后 被它内部简洁明了的链式语法所惊艳到 瞬间链式语法就像神奇的魔法棒 通过一行链式语...

网友评论

      本文标题:链式语法学习

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