Swift错误:'manager()'不可用:使用对象构造'AFHTTPRequestOperationManager()'

Mor*_*ard 4 objective-c afhttprequestoperation swift

我有这个快速的代码,我认为应该工作,但它无法处理客观的静态字段.我试图添加"()"多个地方但没有任何作用.

func AFHTTPRequestOperationManagerDispatchOnMainQueue(mainQueue: Bool) -> AFHTTPRequestOperationManager {
    var manager = AFHTTPRequestOperationManager.manager
    manager.responseSerializer = AFJSONResponseSerializer(readingOptions: NSJSONReadingOptions.AllowFragments)
    manager.requestSerializer = AFJSONRequestSerializer(readingOptions: NSJSONReadingOptions.AllowFragments)
    if (!mainQueue) {
        manager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
    }
    return manager;
}
Run Code Online (Sandbox Code Playgroud)

字段和属性如下所示:

+ (instancetype)manager;
@property (nonatomic, strong) AFHTTPRequestSerializer <AFURLRequestSerialization> * requestSerializer;
@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * responseSerializer;
Run Code Online (Sandbox Code Playgroud)

我收到这些错误消息:

错误:'manager()'不可用:使用对象构造'AFHTTPRequestOperationManager()'
错误:'() - > AFHTTPRequestOperationManager!' 没有名为'responseSerializer'的成员
错误:'() - > AFHTTPRequestOperationManager!' 没有名为'requestSerializer'的成员
错误:'() - > AFHTTPRequestOperationManager!' 没有名为'completionQueue'的成员
错误:函数产生预期类型'AFHTTPRequestOperationManager!'; 你的意思是用'()'来称呼它?

Dav*_*rry 9

将Objective-C导入到Swift中时,就像在此处使用AFNetworking一样,可识别的工厂方法将转换为简单的初始化程序.在这种情况下,这意味着(如@Martin指出的那样)您应该使用该表单:

var manager = AFHTTPRequestOperationManager()
Run Code Online (Sandbox Code Playgroud)