2016-01-22 2 views
0

Я пытаюсь подключиться к базе данных из приложения iOS, написанного в Swift. Я не могу найти функцию, которая заменяет все остальные, которые были отмечены как устаревшие в последнем обновлении iOS (9.2?). Некоторые из этих функций - sendSynchronousRequest и sendAsynchronousRequest.Быстрый ответ AsynchronousRequest не может быть прочитан

Я хочу прочитать данные и ответы из базы данных. Я использую следующий код:

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in 
     let res = response as! NSHTTPURLResponse 
     if(res.statusCode >= 200 && res.statusCode < 300) { 
      let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
     } 
    }) 

Я получаю сообщение об ошибке в первой строке:

Неправильное преобразование из метания функции типа «(? NSURLResponse ?, NSData ?, NSError) броски -> Пустота», чтобы не-бросание типа функции '(? NSURLResponse ?, NSData ?, NSError) -> Пустота'

Однако, когда я закомментируйте строку в Условный оператор (пусть jsonData: NSDictionary = try ...) ошибка исчезает.

Я знаю, что эта функция устарела; Я ничего не могу найти.

Как я могу прочитать ответ от AsynchronousRequest без ошибок?

ответ

1

вам не хватает сделать/поймать блок

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response, data, error) -> Void in 
    let res = response as! NSHTTPURLResponse 
    do { 
    if(res.statusCode >= 200 && res.statusCode < 300) { 
     let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
    } 
    } catch { 

    } 
} 

Но проще и лучше способ Свифт это сетевая библиотека: Alamofire

Пример:

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"]) 
     .responseJSON { response in 
      print(response.request) // original URL request 
      print(response.response) // URL response 
      print(response.data)  // server data 
      print(response.result) // result of response serialization 

      if let JSON = response.result.value { 
       print("JSON: \(JSON)") 
      } 
     } 
Смежные вопросы