我正在使用AFNetworking 2.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 build 6A1030)在第三行出错:
'init()' is unavailable: superseded by import of -[NSObject init]
这一行在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
并将代码添加到“bridging-header”实现文件中:
@implementation AFImageResponseSerializer (CustomInit)
+ (instancetype)sharedSerializer {
return [AFImageResponseSerializer serializer];
}
@end
并像这样使用它:
AFImageResponseSerializer.sharedSerializer()
答案 0 :(得分:16)
这是由于在XCode 6.1中转换为基类变得更加严格。 所以,你需要upcasting,如下所示。
requestOperation.responseSerializer = AFImageResponseSerializer() as AFHTTPResponseSerializer
答案 1 :(得分:0)
如果是类方法,您可能需要AFImageResponseSerializer.serializer()