http://www.vincenttsai.com/reactivecocoa-racsequence/
ReactiveCocoa – RACSequence介紹
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
[
array
;
for
(
NSNumber
*value
in
numbers
)
{
//過濾掉奇數
if
(
[
value
intValue
]
%
2
!=
0
{
continue
}
//取平方值後加入另一個array
long
square
*
results
addObject
:
square
;
NSLog
@"results = %@"
result
;
|
我們會利用RACStream中定義的其中兩個方法
1
2
-
instancetype
filter
BOOL
^
id
value
block
;
//過濾掉不要的值
map
//將值進行轉換
這是利用RACSequence的寫法
1
12
13
*result
numbers
rac_sequence
//將NSArray轉成 RACSequence
//filter方法可以過濾掉不要的值
:
^
BOOL
*value
{
//只留偶數,回傳YES,表示該值要留下
return
==
0
;
//map可以將值再進行轉換
}
map
id
//將傳入的值平方
;
array
;
//將RACSequence轉成NSArray
;
//Array中的值為 4,16