ReactiveCocoa有关集合类的使用
Sequences 集合 表示一个不可变的序列值且不能包含空值,
1.实现NSArray的快速遍历
NSArray *numbers = @[@1, @2, @3, @4, @5, @6];
//通过rac_sequence来获取Signal
RACSignal *signal = numbers.rac_sequence.signal;
[signal subscribeNext:^(id x) {
//子线程异步请求
NSLog(@"%@", x);
}];
2.实现NSSet的快速遍历
NSSet *set = [NSSet setWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", nil];
RACSignal *setSignal = set.rac_sequence.signal;
[setSignal subscribeNext:^(id _Nullable x) {
NSLog(@"%@", x);
}];
3.实现NSDictionary的快速遍历
NSDictionary *dict = @{@"key1":@"Hello", @"key2":@"World"};
RACSignal *dictSignal = dict.rac_sequence.signal;
[dictSignal subscribeNext:^(id x) {
NSLog(@"%@", x);
//可以看到x打印出来的是RACTuple对象 RACTuple 元组,使用RACTupleUnpack进行解包
RACTupleUnpack(NSString *key, NSString *value) = x;
NSLog(@"key = %@, value = %@", key, value);
}];
4.针对项目中经常遇到的结构复杂的数据结构中的相同模型转成model
使用rac中的map进行型号传递时的转换
@interface Person : NSObject
@property(nonatomic, strong)NSString *name;
@property(nonatomic, assign)NSInteger sex;
+ (instancetype)personWithDict:(NSDictionary *)dict;
@end
NSArray *personArray = @[@{@"name":@"小张", @"sex":@1}, @{@"name":@"小王", @"sex":@2}];
NSArray *resultArray = [[dictSignal2 map:^id(id value) {
return [Person personWithDict:value];
}] toArray];
NSLog(@"resultArray = %@", resultArray);
ReactiveCocoa有关集合类的使用的更多相关文章
- 最快让你上手ReactiveCocoa之基础篇
前言 很多blog都说ReactiveCocoa好用,然后各种秀自己如何灵活运用ReactiveCocoa,但是感觉真正缺少的是一篇如何学习ReactiveCocoa的文章,这里介绍一下. 1.Rea ...
- ReactiveCocoa学习
ReactiveCocoa常见类 6.1RACSiganl:信号类,一般表示将来有数据传递,只要有数据改变,信号内部接收到数据,就会马上发出数据. 注意: 信号类(RACSiganl),只是表示当数据 ...
- IOS ReactiveCocoa
一 前提: 在iOS开发过程中,当某些事件响应时,需处理的某些业务逻辑 Eg. 按钮点击:action ScrollView滚动:delegate 属性值改变:KVO ReactiveCocoa为事件 ...
- ReactiveCocoa学习总结
最近一直断断续续学习关于ReactiveCocoa的知识内容,对于它的一些基础内容将通过本文进行一个总结,主要是一些入门知识 一:RACSignal一些运用 @interface RACSignalT ...
- ReactiveCocoa基础知识内容
本文记录一些关于学习ReactiveCocoa基础知识内容,对于ReactiveCocoa相关的概念如果不了解可以网上搜索:RACSignal有很多方法可以来订阅不同的事件类型,ReactiveCoc ...
- ReactiveCocoa入门教程:第一部分
http://www.cocoachina.com/ios/20150123/10994.html 本文翻译自RayWenderlich,原文:ReactiveCocoa Tutorial--The ...
- 1个小时学会ReactiveCocoa基本使用
来源:朱凯奇 链接:http://www.jianshu.com/p/5d966074741a 1.ReactiveCocoa简介 ReactiveCocoa(简称为RAC),是由Github开源的一 ...
- 使用ReactiveCocoa实现iOS平台响应式编程
使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Prog ...
- [转]使用ReactiveCocoa实现iOS平台响应式编程
原文:http://www.itiger.me/?p=38 使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍 ...
随机推荐
- 设计模式(2)工厂方法模式(Factory Method)
设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 源码地址 0 工厂方法模式简介 0.0 工厂方法模式定义 工厂方法模式是在简单工厂模式基础上,为解决更复杂的对象创建问题而衍生 ...
- Xamarin开发笔记—设备类&第三方弹窗的使用和注意事项
一.设备类是Xamarin重要开发组成部分,下面介绍一下设备类的主要用法: //唤醒打电话 Device.OpenUri(new Uri("tel:180xxxxxxxx")); ...
- ThreadLocal经典分页
package com.netease.live.admin.util; import com.netease.live.common.util.Constant; /** * * @author b ...
- Python的迭代器与生成器
Python中的生成器和迭代器方便好用,但是平时对生成器和迭代器的特性掌握的不是很到位,今天将这方面的知识整理一下. 迭代器 为了更好的理解迭代器和生成,我们需要简单的回顾一下迭代器协议的概念. 迭代 ...
- 关于拒绝测试驱动开发(NoTDD)
今天在reddit看到微软某大牛的博客(https://blogs.msdn.microsoft.com/ericgu/2017/06/22/notdd/),说到拒绝TDD(测试驱动开发,下文统一使用 ...
- CSS input type="number"出现上下箭头时解决方案
input type="number"时录入内容不可控制,解决方案是在css中添加//火狐input[type=number] { -moz-appearance:tex ...
- SSIM(结构相似度算法)不同实现版本的差异
前言 最近用ssim测试图片画质损伤时,发现matlab自带ssim与之前一直使用的ssim计算得分有差异,故和同事开始确定差异所在. 不同的SSIM版本 这里提到不同的ssim版本主要基于matla ...
- [图形学] Chp18 OpenGL表面纹理函数
以2D表面为例展示纹理贴图,用opengl设置一个2D纹理,颜色存储在32*32*3的数组中,对应的纹理坐标为0<=s, t<=1.0. 画出几个正方形表面,分别以GL_CLAMP(纹理坐 ...
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A B题
当时晚上打CF时候比较晚,加上是集训期间的室友都没有晚上刷题的习惯,感觉这场CF很不在状态.A题写复杂WA了一发后去厕所洗了个脸冷静了下,换个简单写法,可是用cin加了ios::sync_with_s ...
- raft如何实现leadership transfer
leadership transfer可以把raft group中的leader身份转给其中一个follower.这个功能可以用来做负载均衡,比如可以把leader放在性能更好的机器或者离客户端更近的 ...