ReactiveCocoa – RACSequence介紹
2015-11-11 11:05
477 查看
http://www.vincenttsai.com/reactivecocoa-racsequence/
ReactiveCocoa – RACSequence介紹
Leavea reply
RactiveCocoa中很重要的兩個class,一個是RACSignal,一個是RACSequence,而這兩個class的super class就是RACStream。 RACSequence很類似Objective-C中的NSDictionary或者NSArray,你可以利用一些方法來達到將NSDictionary或者NSArray中的值進行一些過濾及轉換。
以一個簡單的例子,我們欲將一個陣列,其內容有1-5,我們只要取出偶數的元素,而且要將值進行平方的動作。這是一般的寫法
1 2 3 4 5 6 7 8 9 10 11 12 | NSArray *numbers = @[@(1),@(2),@(3),@(4),@(5)]; NSMutableArray *results = [NSMutableArray array]; for (NSNumber *value in numbers) { //過濾掉奇數 if ( [value intValue] %2 != 0 ){ continue; } //取平方值後加入另一個array long square = [value intValue] * [value intValue]; [results addObject:@(square)]; } NSLog(@"results = %@",result); |
我們會利用RACStream中定義的其中兩個方法
1 2 | - (instancetype)filter:(BOOL (^)(id value))block; //過濾掉不要的值 - (instancetype)map:(id (^)(id value))block; //將值進行轉換 |
1 2 3 4 5 6 7 8 9 10 11 12 13 | NSArray *numbers = @[@(1),@(2),@(3),@(4),@(5)]; NSArray *result = [[[[numbers rac_sequence] //將NSArray轉成 RACSequence //filter方法可以過濾掉不要的值 filter:^BOOL(NSNumber *value) { //只留偶數,回傳YES,表示該值要留下 return [value intValue] %2 ==0; //map可以將值再進行轉換 }] map:^id(NSNumber *value) { //將傳入的值平方 long square = [value intValue] * [value intValue]; return @(square); }] array]; //將RACSequence轉成NSArray NSLog(@"results = %@",result); //Array中的值為 4,16 |
Document。
下次會主要分享RACSignal,這個才是最常用到的功能。如果你對ReactiveCocoa也有興趣,歡迎在下方留言一起交流。
相关文章推荐
- React使用
- 最新的react0.14支持ES6开发环境配置方案
- react native image resizeMode理解
- ReactiveCocoa框架菜鸟入门(四)——信号(Signal)详解
- ReactiveCocoa框架菜鸟入门(五)——信号的FlattenMap与Map
- ReactiveCocoa入门教程——第二部分
- ReactiveCocoa入门教程——第一部分
- windows环境下搭建react native0.12.0 android环境
- react-native Requring invalid module "image! 解决办法 android
- react
- ACE的Reactor用法
- ACE_Reactor (V1.01)
- react-native —— 在Mac上搭建React Native Android开发环境
- React Native实战(一):MAC配置环境
- ReactOS源码分析——内核加载器(一)
- React Native开发环境的配置(一)
- ReactJS 傻瓜教程
- ReactiveCocoa基础知识内容
- ReactiveCocoa的基本使用方法
- ReactiveCocoa