【发布时间】:2018-05-06 16:37:49
【问题描述】:
我开始使用 PromiseKit 以防止自己编写具有 10 级回调的函数..
我使用 CocoaPods 安装了最新版本 (6.2.4),正在运行最新版本的 xCode,在我试图让它工作的文件中导入了 PromiseKit,但我得到了 Xcode 的非常奇怪的行为,导致了几个错误。
我打算做一些非常基本的事情来开始:
下面的函数为我正在开发的产品概览应用中的产品类别创建过滤器 (ProductListComponents)。
func createCategoryComponents(masterComponent: MasterComponent?) -> Promise<[ProductListComponents]> {
return Promise { seal in
//create a bunch of product category components
seal.resolve([components])
}
}
这里一切都好。然后我尝试得到这个:
firstly {
self.createCategoryComponents(masterComponent: masterComponent)
}.then { createdComponents in
completion.resolve(nil, createdComponents)
}
这拒绝工作。首先,当我尝试输入firstly 代码时,Xcode 建议:
firstly(execute: { () -> Guarantee<T> in
//code
})
和:
firstly(execute: { () -> Thenable in
//code
})
我在任何 PromiseKit 文档中都没有看到这种语法。它还建议了奇怪的语法,例如.then 调用。当接受 Xcode 的建议时,它显然会显示错误,因为这不是正确的 PromiseKit 语法。当忽略 Xcode 的建议时,我得到了这个:
显然这里出了点问题,我最好的猜测是 PromiseKit 的安装出了点问题。我已经清理了我的项目,重新安装了 pod,重新启动了 Xcode,但似乎没有任何效果。
问题
有人知道我在这里遇到了什么样的问题,更重要的是,我该如何解决?
任何帮助将不胜感激。
【问题讨论】:
-
您需要像这样在
firstly中返回Promise:firstly{return self.createCategoryComponents(masterComponent: masterComponent)}.then{...。 -
嗨@DávidPásztor,感谢您的评论。我已经尝试过你的方法,但它似乎并没有解决问题。你有什么其他想法可以让 PromiseKit 语法像他们的文档一样工作吗?
标签: ios swift promisekit