Я использую Alamofire для базовой сети. Вот моя проблема. у меня есть класс
class User {
var name:String?
var company:String
init () {
//
manager = Alamofire.Manager(configuration: configuration)
}
func details () {
//first we login, if login is successful we fetch the result
manager.customPostWithHeaders(customURL!, data: parameter, headers: header)
.responseJSON { (req, res, json, error) in
if(error != nil) {
NSLog("Error: \(error)")
}
else {
NSLog("Success: \(self.customURL)")
var json = JSON(json!)
println(json)
self.fetch()
println("I fetched correctly")
}
}
func fetch() {
manager.customPostWithHeaders(customURL!, data: parameter, headers: header)
.responseJSON { (req, res, json, error) in
if(error != nil) {
NSLog("Error: \(error)")
}
else {
NSLog("Success: \(self.customURL)")
var json = JSON(json!)
println(json)
//set name and company
}
}
}
Моя проблема в том, что если я сделаю что-то вроде
var my user = User()
user.fetch()
println("Username is \(user.name)")
Я ничего не получаю в консоли для user.name. Однако, если я поставлю точку останова, я увижу, что правильно получаю имя пользователя и компанию внутри своей функции выборки. Я думаю, что менеджер работает в отдельном неблокирующем потоке и не ждет. Однако я действительно не знаю, как я могу инициализировать свой класс с правильными данными, если я не могу знать, успешно ли завершился менеджер. Итак, как я могу правильно инициализировать свой класс для немедленного доступа после того, как все потоки менеджера Alamofire выполнили свою работу?