Ошибки 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()