Ios 无法在Swift中调用特定的Objective-C类方法
我正在使用AF2.3.1:Ios 无法在Swift中调用特定的Objective-C类方法,ios,objective-c,swift,Ios,Objective C,Swift,我正在使用AF2.3.1: let request = NSURLRequest(URL: NSURL(string: "http://xxx.xxx.xxx/xxx")!) var requestOperation = AFHTTPRequestOperation(request: request) requestOperation.responseSerializer = AFImageResponseSerializer() 我在使用Swift 1.1(Xcode 6.1 beta 2
let request = NSURLRequest(URL: NSURL(string: "http://xxx.xxx.xxx/xxx")!)
var requestOperation = AFHTTPRequestOperation(request: request)
requestOperation.responseSerializer = AFImageResponseSerializer()
我在使用Swift 1.1(Xcode 6.1 beta 2 build 6A1030)的第三行有一个错误:
这一行在Objective-C上应该是这样的:
requestOperation.responseSerializer = [AFImageResponseSerializer serializer];
我认为这个问题与Objective-C的Swift自动桥接有关。有什么解决方法吗
更新:
这种方式行不通:
AFImageResponseSerializer.serializer()
错误描述非常好:
'serializer()' is unavailable: use object construction 'AFHTTPResponseSerializer()'
更新2:
现在我找到了一个暂时的解决办法。我将此代码添加到桥接头中:
@interface AFImageResponseSerializer (CustomInit)
+ (instancetype)sharedSerializer;
@end
和添加到“桥接头”实现文件的代码:
@implementation AFImageResponseSerializer (CustomInit)
+ (instancetype)sharedSerializer {
return [AFImageResponseSerializer serializer];
}
@end
然后像这样使用它:
AFImageResponseSerializer.sharedSerializer()
如果是类方法,您可能需要
AFImageResponseSerializer.serializer()
这是由于在XCode 6.1中对基类的转换越来越严格。
所以,你需要向上投射,如下所示
requestOperation.responseSerializer = AFImageResponseSerializer() as AFHTTPResponseSerializer
刚刚添加了对我有用的问题的更新!谢谢再见,谢谢!您是如何发现此解决方案的?:)
requestOperation.responseSerializer = AFImageResponseSerializer() as AFHTTPResponseSerializer