试图了解ReactiveCocoa

时间:2014-03-09 11:00:49

标签: ios cocoa reactive-programming reactive-cocoa

我正在测试反应性可可。 在下面的代码中,我希望输出为:

name : Item 1
arr : a1
arr : a2
name : Item 2
arr : b1
arr : b2 
done

但是我得到了不同的不可预知的结果,例如:

name : Item 1
arr : a1
arr : b1
name : Item 2
arr : a2
arr : b2 
done

为什么会这样? 我如何强制Reactive Cocoa给我第一个输出?

NSArray * arr = @[@{@"name":@"Item 1", @"array" : @[@"a1",@"a2"]} , @{@"name":@"Item 2", @"array":@[@"b1",@"b2"]}];

[[[arr rac_sequence].signal flattenMap:^RACStream *(NSDictionary *dict) {
        NSArray * arr = dict[@"array"];
        NSLog(@"name : %@", dict[@"name"]);

       return  [[arr rac_sequence].signal flattenMap:^RACStream *(NSString *value1) {
            NSLog(@"arr %@",value1);
            return nil;
        }];


}]subscribeCompleted:^{
    NSLog(@"done");
}];

1 个答案:

答案 0 :(得分:2)

-signal将序列转换为异步发送的信号。因此,您看到一些不确定性并不令人惊讶。

您想要的是使用-signalWithScheduler:RACScheduler.immediateScheduler