iOS(ObjC)PromiseKit - 承诺中的承诺

时间:2016-07-19 23:10:32

标签: ios objective-c promise promisekit

我试图通过一些在每个级别添加功能的类来级联一个承诺。

+ (AnyPromise *) method {
    return [SomeClass whichReturnsPromise]
    .then(^(id obj){
        // do stuff
        return obj;
    });
  }

不幸的是,这段代码在第二行引发了错误:

exc_bad_access (code=1 address=0x10)

(注意:只需调用return [SomeClass whichReturnsPromise]即可。)

我已经搜索了stackoverflow的答案,并尝试了上述代码的许多变体(可以在javascript中使用),但我一直得到同样的错误。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

结果显示[SomeClass which ReturnsPromise]在转换为返回承诺之前返回nil的中断案例。将其更改为返回值为nil的承诺。立即行动。

答案 1 :(得分:0)

如果没有测试,我认为以下内容应该有效:

[self wait].then(^{
   return [SomeClass whichReturnsPromise];
}).then(^(id obj) {
   return obj;
});

我知道以下是Swift,但如果您有AnyPromise,则可以在Promise<T>链中使用它:

someSwiftPromise().then { _ -> AnyPromise in
   // provided by `pod PromiseKit/SystemConfiguration`
   return SCNetworkReachability()
}.then { (obj: AnyObject?) in
   // AnyPromise always resolves with `AnyObject?`
}