iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何使用ReactiveCocoa完成此操作大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立一个功能,我的应用程序的用户可以找到他们的Facebook好友并将其添加到应用程序中.我需要做三个步骤:

>获取当前连接的用户
>获取Facebook用户
>获取应用程序用户(这取决于步骤2)

完成所有这些后,我需要将三个结果数组合并/减少为最终数组.

我创建了三个函数,都返回RACSignal

getUsersWithFacebookIds,getConnectedUsers和getFacebookUsers

我不确定如何使用ReactiveCocoa连接所有这些.

解决方法

一切都做完了,可以通过以下方式实现:

[[RACSignal combineLatest:@[connectUseRSSignal,facebookUseRSSignal,applicationUseRSSignal]] subscribeNext:^(RACTuple *users) {
    NSArray *connectedUsers = [users first];
    NSArray *facebookUsers = [users second];
    NSArray *applicationUsers = [users third];

}];

缺少的另一个部分是如何使applicationUseRSSignal依赖于fACBookUseRSSignal.可以这样做:

- (RACSignal *)applicationUseRSSignalWithFacebookUseRSSignal:(RACSignal *)fbSignal
{
    return [fbSignal flattenMap:^RACStream *(NSArray *facebookUsers) {
        return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
            // Do what you have to do with the facebookUsers
            return nil;
        }];
    }];
}

只是为答案增加一点.我假设那些是冷信号,(尚未开始的信号尚未订阅).所以使用COR_130_11845@bineLatest的想法是你要捕获每个单个信号至少发送一个一个,after that you subscribe to it so it can begin的点.最后你可以从RACTuple中获取它们的值.

我重读了你的问题,你希望它们都在一个数组中:

[[[RACSignal combineLatest:@[connectUseRSSignal,applicationUseRSSignal]] map:^id(RACTuple *allArrays) {
    return [allArrays.rac_sequence foldLeftWithStart:[NSMutableArray array] reduce:^id(id accumulator,id value) {
        [accumulator addObjectsFromArray:value];
        return accumulator;
    }];
}] subscribeNext:^(NSArray *allUsers) {
    // Do Something
}];

大佬总结

以上是大佬教程为你收集整理的ios – 如何使用ReactiveCocoa完成此操作全部内容,希望文章能够帮你解决ios – 如何使用ReactiveCocoa完成此操作所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。