Как вызвать веб-службу и получить ответ в Swift Проверить IT
Выполнение запроса API
var request: NSURLRequest = NSURLRequest(URL: url)
var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)
Подготовка к ответу
Объявите массив, как показано ниже
var data: NSMutableData = NSMutableData()
Получение ответа
1.
func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
// Received a new request, clear out the data object
self.data = NSMutableData()
}
2.
func connection(connection: NSURLConnection!, didReceiveData data: NSData!) {
// Append the received chunk of data to our data object
self.data.appendData(data)
}
3.
func connectionDidFinishLoading(connection: NSURLConnection!) {
// Request complete, self.data should now hold the resulting info
// Convert the retrieved data in to an object through JSON deserialization
var err: NSError
var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
if jsonResult.count>0 && jsonResult["results"].count>0 {
var results: NSArray = jsonResult["results"] as NSArray
self.tableData = results
self.appsTableView.reloadData()
}
}
Когда NSURLConnection получает ответ, мы можем ожидать, что метод didReceiveResponse будет вызван от нашего имени. На этом этапе мы просто перезагружаем наши данные, говоря self.data = NSMutableData (), создавая новый пустой объект данных.
После того, как соединение выполнено, мы начнем получать данные в методе didReceiveData. Аргумент данных, передаваемый здесь, - это вся наша сочная информация. Нам нужно удержать каждый фрагмент, который входит, поэтому мы добавляем его к объекту self.data, который мы удалили ранее.
Наконец, когда соединение выполнено и все данные получены, connectionDidFinishLoading и мы готовы использовать данные в нашем приложении. Hooray!
Метод connectionDidFinishLoading использует класс NSJSONSerialization для преобразования наших исходных данных в полезные словарные объекты путем десериализации результатов с вашего URL.