[英]Bridging from Objective C to Swift with PromiseKit
通过将PromiseKit 2.0与Swift 1.2结合使用,我试图使用在Swift中由Objective C创建的PMKPromise。
目标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()
}
相似的错误:“无法使用类型'(((AnyObject?)-> AnyPromise)'的参数列表调用'then'”
PromiseKit中有两种不同的Promise<T>
类,一种用于Swift( Promise<T>
),一种用于ObjC( AnyPromise
)。 Swift是通用的,而Objective-C无法看到通用的类,因此这就是为什么有两个。
如果要在ObjC和Swift中同时使用Foo.promise()
,那么您做对了。 但是,如果您只打算在Swift中使用此Promise<T>
则建议将其重写为Promise<T>
。
要使用Objective-C的AnyPromise
( PMKPromise
是一个过时的别名AnyPromise
:喜欢AnyPromise
)在银行代码必须拼接成一个已有链。
someSwiftPromise().then { _ -> AnyPromise in
return someAnyPromise()
}.then { (obj: AnyObject?) -> Void in
//…
}
应该有一种从AnyPromise开始的方法,可能我会在今天晚些时候添加:
someAnyPromise().then { (obj: AnyObject?) -> Void in
//…
}
期待2.1更新。 [编辑:2.1以上添加, then
添加]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.