主业iOS/PHP,副业啥都玩,QQ:705719110,欢迎来撩!

RAC(ReactiveCocoa)学习(七)

iOS开发 随风 228℃ 0评论

ReactiveCocoa常见宏,RAC有许多强大而方便的宏。

RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于给某个对象的某个属性绑定。

@weakify(Obj)和@strongify(Obj),一般两个都是配套使用,在主头文件(ReactiveCocoa.h)中并没有导入,需要自己手动导入,RACEXTScope.h才可以使用。但是每次导入都非常麻烦,只需要在主头文件自己导入就好了。

RAC-bind
bind(绑定)的使用思想和Hook的一样—> 都是拦截API从而可以对数据进行操作,,而影响返回数据。
发送信号的时候会来到30行的block。在这个block里我们可以对数据进行一些操作,那么35行打印的value和订阅绑定信号后的value就会变了。变成什么样随你喜欢喽。

RAC-过滤
有时候我们想要过滤一些信号,这时候我们便可以用RAC的过滤方法。过滤方法有好多种,如下代码,从不同情况下进行了分析。

跳跃 : 如下,skip传入2 跳过前面两个值
实际用处: 在实际开发中比如 后台返回的数据前面几个没用,我们想跳跃过去,便可以用skip

distinctUntilChanged:– 如果当前的值跟上一次的值一样,就不会被订阅到

take:可以屏蔽一些值,去掉前面几个值—这里take为2 则只拿到前两个值

takeLast:和take的用法一样,不过他取的是最后的几个值,如下,则取的是最后两个值
注意点:takeLast 一定要调用sendCompleted,告诉他发送完成了,这样才能取到最后的几个值

takeUntil:—给takeUntil传的是哪个信号,那么当这个信号发送信号或sendCompleted,就不能再接受源信号的内容了。

ignore:忽略一些值
ignoreValues:表示忽略所有的值

一般和文本框一起用,添加过滤条件
只有当文本框的内容长度大于5,才获取文本框里的内容

RAC-映射
RAC的映射在实际开发中有什么用呢?比如我们想要拦截服务器返回的数据,给数据拼接特定的东西或想对数据进行操作从而更改返回值,类似于这样的情况下,我们便可以考虑用RAC的映射.

RAC-组合
把多个信号聚合成你想要的信号,使用场景—-:比如-当多个输入框都有值的时候按钮才可点击。

转载请注明:怼码人生 » RAC(ReactiveCocoa)学习(七)

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址