2016-09-08 3 views
0

У меня есть функция, чтобы отправить асинхронный запрос на URL-адрес на Swift 1.2, но он не работает на Swift 2.Swift 2 & JSON функция для асинхронного запроса

func getpost(method:String,bodyt:String,url:String,completion: (res: AnyObject?)->Void){ 
UIApplication.sharedApplication().networkActivityIndicatorVisible = true 
let urlString = url 
let url:NSURL! = NSURL(string: urlString) 
let request = NSMutableURLRequest(URL: url) 
request.HTTPMethod = method 
let postString = bodyt 
if method.uppercaseString == "POST"{ 
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 
} 
let mainQueue = NSOperationQueue.mainQueue() 
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) 
    {(response, data, error) in 
     if let httpResponse = response as? NSHTTPURLResponse { 
      let statusCode = httpResponse.statusCode 
      if (error == nil) && (statusCode == 200){ 
       let resultdata: AnyObject? = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) 
       dispatch_async(dispatch_get_main_queue(), { 
        completion(res: resultdata) 
       }) 
      } 
     } 

} 
} 

PLS помощь :)

+0

Вы должны быть более конкретными. –

+0

Возможный дубликат [Swfit 2 «Дополнительный аргумент» при вызове »] (http://stackoverflow.com/questions/33470527/swfit-2-extra-argument-error-in-call) – vadian

ответ

0

NSURLConnection был устаревшим в iOS 9, что, вероятно, дает вам проблемы. Насколько я могу разобраться в том, что вы пытаетесь сделать, «новый способ» будет состоять в инициализации NSURLSession, а затем NSURLSessionDataTask для получения требуемых данных. Это можно сделать с помощью обработчика завершения так же, как вы описали здесь, или также с помощью методов делегата. Вы можете узнать больше на странице справки разработчиков: https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/ Я могу отправить код примера, если хотите. Удачи!

Смежные вопросы