Tim*_*man 2 objective-c swift promisekit
使用PromiseKit 2.0和Swift 1.2,我试图使用在Swift的Objective C中创建的PMKPromise.
目标C代码:
@interface FooTest : NSObject
+ (PMKPromise *)promise;
@end
Run Code Online (Sandbox Code Playgroud)
Swift代码(我尝试了很多变种,但没有一个变化.这个变化最接近http://promisekit.org/PromiseKit-2.0-Released/上给出的例子):
FooTest.promise().then { (obj: AnyObject?) in
self.obj = obj
}
Run Code Online (Sandbox Code Playgroud)
编译器错误:无法使用类型'((AnyObject?) - > _)'的参数列表调用'then'
这也不起作用:
FooTest.promise().then { (obj: AnyObject?) -> AnyPromise in
return AnyPromise()
}
Run Code Online (Sandbox Code Playgroud)
类似的错误:"无法使用类型'的参数列表调用'then'((AnyObject?) - > AnyPromise)'"
PromiseKit中有两个不同的promise类,一个用于Swift(Promise<T>),另一个用于ObjC(AnyPromise).Swift是通用的,Objective-C看不到泛型类,所以这就是为什么有两个.
如果Foo.promise()要在ObjC和Swift中使用,那么你做的是正确的.但是,如果您只打算在Swift中使用此承诺,那么我建议将其重写为Promise<T>.
要在Swift代码中使用Objective-C AnyPromise(PMKPromise是一个弃用的别名AnyPromise:prefer AnyPromise),您必须将它拼接成现有的链.
someSwiftPromise().then { _ -> AnyPromise in
return someAnyPromise()
}.then { (obj: AnyObject?) -> Void in
//…
}
Run Code Online (Sandbox Code Playgroud)
这里应该是从AnyPromise起动方式,很可能我会在今天晚些时候补充一点:
someAnyPromise().then { (obj: AnyObject?) -> Void in
//…
}
Run Code Online (Sandbox Code Playgroud)
期待2.1更新.[编辑:2.1推上以上then添加]
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |