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

iOS (ObjC) PromiseKit - Return promise within promise

我正在尝试通过一些 类 级联承诺,这些承诺在每个级别添加功能。

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

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

exc_bad_access (code=1 address=0x10)

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

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

未经测试,我认为以下应该有效:

[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?`
}

原来 [SomeClass which ReturnsPromise] 的中断案例是 returning nil 在它被转换为 return 承诺之前。将其更改为 return 一个价值 nil 的承诺。现在可以使用了。