Я проделал некоторое чтение, и была рекомендация в аналогичном сообщении (Swift closure with Alamofire) и попыталась сделать то же самое с моим кодом, но я не могу найти способ вызова функции сейчас?Быстрое завершение функции
я получаю ошибку: Не удается преобразовать тип Выражение в '(ответ: @lvalue String)' к типу '((ответ: String) ->()) ->()'
import UIKit
class myClass101: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
var api_error: String = ""
activityInd.startAnimating()
call_api_function(response: api_error)
activityInd.stopAnimating()
if (api_error != "") {
let alertController = UIAlertController(title: "Server Alert", message: "Could not connect to API!", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default,handler: nil))
self.presentViewController(alertController, animated: true, completion: nil)
}
}
}
функция такова:
func call_api_function(completion: (response: String) ->()) {
let api_url_path: String = "http://\(str_api_server_ip):\(str_api_server_port)"
let api_url = NSURL(string: api_url_path + "/devices.xml")!
Alamofire.request(.GET, api_url)
.authenticate(user: str_api_username, password: str_api_password)
.validate(statusCode: 200..<300)
.response { (request, response, data, error) in
var senderror: String = error!.localizedDescription
completion(response: senderror)
if (error != nil) {
println(senderror)
}
// do other tasks here
}
}
Спасибо!
Костас
Большое спасибо за ваш вклад. Роб! Очень признателен!!!! – Kostas
Кстати, [ответ на ваш другой вопрос] (http://stackoverflow.com/a/27089820/1271826) показывает пример закрытия с двумя параметрами. Ясно, что, учитывая, что вы имеете дело с XML, вы также можете проанализировать его, но этот другой ответ иллюстрирует идею передачи двух параметров через закрытие. – Rob