信号的升阶
RACSignal *signal = [RACSignal return:@"1"];
RACSignal *signaHightOrder = [RACSignal return:signal];
RACSignal *anthoerSig = [signaHightOrder map:^id _Nullable(id _Nullable value) {
NSLog(@"----%@",value);
return [RACSignal return:value];
}];
[anthoerSig subscribeNext:^(RACSignal * _Nullable x) {
[x subscribeNext:^(id _Nullable x) {
}];
}];
信号的降阶
UITextField * search = [[UITextField alloc] init];
RACSignal * serrchSig = search.rac_textSignal;
RACSignal * requestSig = [serrchSig map:^id _Nullable(id _Nullable value) {
NSString * urlStr = @"";
NSURL * url = [NSURL URLWithString:urlStr];
NSURLRequest * req = [NSURLRequest requestWithURL:url];
return [NSURLConnection rac_sendAsynchronousRequest:req]
}];
requestSig = [requestSig switchToLatest];
_sigA = [RACSignal return:@(NO)];
RACSignal * thenSig = [RACSignal return:@(YES)];
RACSignal * eleSig = [RACSignal return:@"123"];
RACSignal * sig = [[_sigA map:^id _Nullable(NSNumber * value) {
return value.boolValue ? thenSig : eleSig;
}] switchToLatest];
[sig subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
// 改变某个值的个数
RACSignal *mappSingal = [[tupleSig map:^id _Nullable(NSNumber * value) {
return [[[RACSignal return:value] repeat] take:value.integerValue];
}] flatten];
[mappSingal subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
// 将一个值改为一个错误
RACSignal *mapSinga1 = [tupleSig map:^id _Nullable(NSNumber * value) {
if (value.integerValue == 0) {
return [RACSignal error:[NSError errorWithDomain:@"0" code:0 userInfo:nil]];
}else
{
return [RACSignal return:value];
}
}];
[mapSinga1 subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
} error:^(NSError * _Nullable error) {
NSLog(@"%d",error.code);
}];
网友评论