gpt4 book ai didi

ios - 有错误的 RACSignal 映射

转载 作者:行者123 更新时间:2023-11-29 12:24:54 25 4
gpt4 key购买 nike

我有一个简单的问题,但找不到好的解决方案。

我有一个发送字符串的信号,然后是一个 mapmap 将字符串转换为 JSON。

可能会出现字符串格式错误导致JSON解析器解析失败的情况。

[stringGeneratorSignal map:^(NSString *bussinessObjectString){
NSError *error;
BussinessObject *obj = [[BussinessObject alloc] initWithString:bussinessObjectString error:&error];
if (error) {
NSLog(@"%@", error);
}
return obj;
}];

但是因为我在 map 内部,所以无法返回错误信号。我想要的是得到解析器提供的错误的错误。

我分析过一些我不喜欢的可能性:

  • 返回映射中的错误,然后有一个将数据(或错误)实际转换为错误信号的包装器信号。问题是我正在委托(delegate)相同的问题(将数据转换为错误信号)。
  • 改用flattenMap。这将允许返回一条错误消息,但问题是它的行为与 map 不同。

这种情况的最佳方法是什么?

谢谢!

最佳答案

查看-tryMap。它允许你返回数据或nil然后设置错误

/// Runs `mapBlock` against each of the receiver's values, mapping values until
/// `mapBlock` returns nil, or the receiver completes.
///
/// mapBlock - An action to map each of the receiver's values. The block should
/// return a non-nil value to indicate that the action was successful.
/// This block must not be nil.
///
/// Example:
///
/// // The returned signal will send an error if data cannot be read from
/// // `fileURL`.
/// [signal tryMap:^(NSURL *fileURL, NSError **errorPtr) {
/// return [NSData dataWithContentsOfURL:fileURL options:0 error:errorPtr];
/// }];
///
/// Returns a signal which transforms all the values of the receiver. If
/// `mapBlock` returns nil for any value, the returned signal will error using
/// the `NSError` passed out from the block.
- (RACSignal *)tryMap:(id (^)(id value, NSError **errorPtr))mapBlock;

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com