使用 Swift 1.2 版本的 PromiseKit 2.0,我尝试在 Swift 中使用从 Objective-C 创建的 PMKPromise。
Objective-C 代码:
类似错误:"Cannot invoke 'then' with an argument list of type '((AnyObject?) -> AnyPromise)'"
Objective-C 代码:
@interface FooTest : NSObject
+ (PMKPromise *)promise;
@end
这是Swift代码(我已经尝试了多种变体,但都无效。这个最接近http://promisekit.org/PromiseKit-2.0-Released/上给出的示例):
FooTest.promise().then { (obj: AnyObject?) in
self.obj = obj
}
编译器错误:无法使用类型为'((AnyObject?) -> _)'的参数列表调用'then'
这也不起作用:
FooTest.promise().then { (obj: AnyObject?) -> AnyPromise in
return AnyPromise()
}
类似错误:"Cannot invoke 'then' with an argument list of type '((AnyObject?) -> AnyPromise)'"
- (AnyPromise *(^)(id))then;
- Tim Normanthen
调用仍然使用id
来允许传递多种类型的块;在Swift中,这可能应该通过重载then
并使用正确的类型签名来完成。我会尝试寻找解决方案一段时间,但这似乎很难处理。 - DanZimm