ios - ReactiveCocoa-映射方法错误

标签 ios objective-c reactive-cocoa

我正在编写一个方法,该方法从 Web 服务获取信号,然后将其从 NSDictionary 转换为对象。但如果转换过程中出现错误怎么办?

那么我会返回 RACSignal error:error] 吗?

[signal map:^id(NSDictionary *dictionary) {
    NSError *error;
    SAMWebServiceResponse *samResponse = [MTLJSONAdapter modelOfClass: SAMWebServiceResponse.class
                                                   fromJSONDictionary: dictionary
                                                                error: &error];
    if (error) {
        //TODO: Don't know if this is the way to go.
        return [RACSignal error:error];
    } else {
        return samResponse;
    }
  }
]

最佳答案

ReactiveCocoa 有一个专门针对这种情况的构造,称为 tryMap:。检查一下:

[signal tryMap:^id(NSDictionary *dictionary, NSError **errorPtr) {
    return [MTLJSONAdapter modelOfClass:SAMWebServiceResponse.class
                     fromJSONDictionary:dictionary
                                  error:errorPtr];
}]

这假设 modelOfClass:fromJSONDictionary:error: 在发生错误时将返回 nil - 这是相当标准的 - 但值得检查相关文档以防万一。您现在编写的代码将仅返回该错误信号,这是完全合法的事情(信号的信号是 RAC 的最佳部分),但不是您想要的。

关于ios - ReactiveCocoa-映射方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23110327/

相关文章:

ios - 如何根据iPhone屏幕尺寸添加不同的约束?

ios - 将单元格添加到 UI Collection View 的底部

objective-c - 推送通知委托(delegate)方法问题

ios - 名为 "image"的属性没有可见的 ivar 吗?

swift - Alamofire 3.0 ReactiveCocoa 转换

ios - 如何在 RAC MVVM 中正确分离 ViewModel 和 ViewController

objective-c - 如何相互转换cocos2d版本

ios - 在 ios 中缓存视频

ios - 后台定位服务在 iOS 7 中不起作用

iOS:使用类型 'CGRect'(又名 'struct CGRect'),其中需要算术或指针类型