• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - react 性 cocoa : Response from HTTPRequest using RACCommand

[复制链接]
菜鸟教程小白 发表于 2022-12-12 08:54:07 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我对 Reactive Cocoa 框架完全陌生,我只是在做一些简单的测试,但遇到了一个我想了解的问题。

基本上我只是在做一个 API 调用来从我的服务器获取一个 JSON 对象,我想用 RAC 来做这个。所以我的步骤如下:

首先我以这种方式构建 RACCommand:

RACCommand *getLatestVersionCommand = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    return [[[API sharedInstance] getLatestAppVersion]
                materialize];
}];

现在我创建信号并以这种方式订阅它:

RACSignal *versionCodeSignal = [[getLatestVersionCommand.executionSignals flatten] deliverOn:[RACScheduler mainThreadScheduler]];
[[versionCodeSignal
    map:^id(NSDictionary *responseObject) {
        return responseObject;
    }]
    subscribeNext:^(NSDictionary *responseObject) {
        NSArray *allVersions = [[NSArray alloc] initWithArray:[responseObject objectForKey:KEY_VERSIONS]];
        for(NSDictionary *version in allVersions) {
            NSString *device = [version objectForKey:KEY_DEVICE];
            if([device isEqualToString:KEY_IOS]) {
                NSString *latestVersionName = [[version objectForKey:KEY_VERSION] objectForKey:KEY_NAME];
                if([APP_VERSION compare:latestVersionName options:NSNumericSearch] == NSOrderedAscending) {
                    //There is a new version!
                    NSLog(@"There is a new version!!!");
                }
            }
        }
    }];

最后我这样执行命令

[getLatestVersionCommand execute:self];

我面临的问题是,在 subscribeNext block 中,我收到的对象是一个 RACEvent 对象,而不是我期望的字典。我知道我做错了什么并且没有正确理解整个流程,我尝试添加我认为我不需要的 map 功能只是为了测试而什么都没有。

我发现的唯一方法是将 map block 中的响应转换为 RACEvent 并返回其值,但在我看来这不是正确的方法。

任何灯光都将不胜感激。



Best Answer-推荐答案


从命令的信号 block 中删除对 -[RACSignal materialize] 的调用。

关于ios - react 性 cocoa : Response from HTTPRequest using RACCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22645870/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap