Ошибки Swift: 'manager()' недоступен: используйте конструкцию объекта 'AFHTTPRequestOperationManager()'

У меня есть этот быстрый код, который, я думаю, должен работать, но он не может обрабатывать статические поля цели c. Я пытался добавить "()" несколько мест, но ничего не работает.

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;
}

Поле и свойства выглядят так:

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

Я получаю эти сообщения об ошибках:

Ошибка: 'manager()' недоступен: используйте конструкцию объекта 'AFHTTPRequestOperationManager()'
Ошибка: '() -> AFHTTPRequestOperationManager!' не имеет члена с именем responseSerializer
Ошибка: '() -> AFHTTPRequestOperationManager!' не имеет члена с именем 'requestSerializer'
Ошибка: '() -> AFHTTPRequestOperationManager!' не имеет члена с именем 'extensionQueue'
Ошибка: функция выдает ожидаемый тип 'AFHTTPRequestOperationManager!'; Вы хотели назвать это '()'?

1 ответ

Решение

Когда Objective-C импортируется в Swift, как вы делаете здесь с AFNetworking, идентифицируемые фабричные методы преобразуются в простые инициализаторы. В этом случае это означает, что (как указывает @Martin) вы должны использовать эту форму:

var manager = AFHTTPRequestOperationManager()
Другие вопросы по тегам