Возврат Bool в закрытие Alamofire
Я использую Swift 2 и Xcode 7.1.
У меня есть функция, которая связывает моих пользователей, но она соединяется в моей базе данных с HTTP. Я использую Alamofire для выполнения этого запроса. Я хочу знать, из контроллера представления, если пользователь подключен.
У меня есть моя функция подключения в классе. И я проверяю соединение в ViewController. Как это :
class user {
// ...
func connectUser(username: String, password: String){
let urlHost = "http://localhost:8888/project350705/web/app_dev.php/API/connect/"
let parametersSymfonyG = [
username, password
]
let url = UrlConstruct(urlHost: urlHost).setSymfonyParam(parametersSymfonyG).getUrl()
//var userArray = [String:AnyObject]()
Alamofire.request(.GET, url)
.responseString { response in
if let JSON = response.result.value {
var result = self.convertStringToDictionary(JSON)!
if result["status"] as! String == "success"{
let userArray = result["user"] as! [String:AnyObject]
userConnect = self.saveUser(userArray)
} else{
print("ERROR-CONNECTION :\n Status :\(result["status"]!)\n Code :\(result["code"]!)")
}
return ""
}
}
}
// ...
}
class MyViewController: UIViewController {
// ...
@IBAction func connect(sender: AnyObject?) {
// CONNECTION
User.connectUser(self.username.text!, password: self.password.text!)
// CHECK
if userConnect != nil {
print("connected")
}else{
print("NotConnected")
}
}
// ...
}
Первое решение: возврат
Для этого потребуется, чтобы моя функция возвращала логическое значение. Только я не могу использовать возврат.
Alamofire.request(.GET, url)
.responseString { response in
if let JSON = response.result.value {
var result = self.convertStringToDictionary(JSON)!
if result["status"] as! String == "success"{
let userArray = result["user"] as! [String:AnyObject]
userConnect = self.saveUser(userArray)
} else{
print("ERROR-CONNECTION :\n Status :\(result["status"]!)\n Code :\(result["code"]!)")
}
return "" // Unexpected non-void return value in void function
}
}
Второе решение:
Я также могу проверить, был ли пользователь зарегистрирован, но перед тестированием я должен дождаться завершения загрузки функции.
users.connectUser(self.username.text!, password: self.password.text!)
// after
if userConnect != nil {
print("connected")
}else{
print("NotConnected")
}
Я бы предпочел вернуть логическое значение. Это облегчит обработку. У тебя есть решение ?