ios - 试图了解 ReactiveCocoa

标签 ios cocoa reactive-programming reactive-cocoa

我正在测试 ReactiveCocoa 。 在下面的代码中,我希望输出为:

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");
}];

最佳答案

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

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

关于ios - 试图了解 ReactiveCocoa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22281352/

相关文章:

ios - 如何将参数传递给委托(delegate)回调方法?

ios - 在 WKWebView 中隐藏键盘附件栏

reactive-programming - 将可观察序列转换为仅从最近的可观察序列产生值的可观察序列

ios - iOS 中的后台下载速度

swift - 如何遍历所有 Mac 桌面空间

cocoa - 从 cocoa 应用程序访问网络服务器

objective-c - 有人可以解释 Objective-C 中的函数名称吗?

java - RxJava : Read from cache until timestamp is expired

java - Mono#then 和 Mono#and 之间的区别?

iOS将tableview单元格信息获取到按钮功能中