2015-10-07 3 views
0

Я написал приложение iOS в swift, и мне пришлось преобразовать его в 2.0, чтобы поместить его в магазин приложений. Приложение работало нормально раньше, но у него были проблемы с перенаправлением с вызовом API JSON. Я добавил в выводе catch, но я все еще продолжаю получать ошибки. Сейчас я говорю, что я не хватает выражения в конце, ничего очень описательного. Любая помощь будет оценена по достоинству.Swift 2.0 API Call

Вот мой код:

let url : String = "http://xproshowcasex.api.channel.livestream.com/2.0/livestatus.json" 
    let request : NSMutableURLRequest = NSMutableURLRequest() 
    request.URL = NSURL(string: url) 
    request.HTTPMethod = "GET" 

    NSURLSession.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse?, data: NSData?, error: NSError?) -> Void in 

     let jsonResult: AnyObject? 
     do { 
      jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: []) 
      print(jsonResult, terminator: ""); 
      let channel: NSDictionary! = jsonResult!.valueForKey("channel") as! NSDictionary; 
      print(channel, terminator: ""); 
      let result: NSNumber! = channel.valueForKey("isLive") as! NSNumber; 
      print(result, terminator: ""); 

      if (result == 0) 
      { 
       let alertController = UIAlertController(title: "", message: 
        "There is no live stream right now", preferredStyle: UIAlertControllerStyle.Alert) 
       alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default,handler: nil)) 

       self.presentViewController(alertController, animated: true, completion: nil) 
      } 

     } 
     catch 
     { 
      // TODO: handle 
     } 
     ) 
    } 
} 

ответ

3

Я не знаю, где sendAsynchronousRequest определяется для NSURLSession, поэтому я не могу проверить подпись метода, чтобы убедиться, что вы используете его правильно, но для начала вам иметь скобу в неправильном месте ближе к концу.

Для чего в будущем такая ошибка ожидаемого выражения является синтаксической ошибкой и указывает на то, что вы не написали, как ожидал компилятор. В этих случаях дважды проверяйте такие вещи, как скобки и круглые скобки, а также другие общие области путаницы синтаксиса.

let url : String = "http://xproshowcasex.api.channel.livestream.com/2.0/livestatus.json" 
let request : NSMutableURLRequest = NSMutableURLRequest() 
request.URL = NSURL(string: url) 
request.HTTPMethod = "GET" 


NSURLSession.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse?, data: NSData?, error: NSError?) -> Void in 

    let jsonResult: AnyObject? 
    do { 
     jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: []) 
     print(jsonResult, terminator: ""); 
     let channel: NSDictionary! = jsonResult!.valueForKey("channel") as! NSDictionary; 
     print(channel, terminator: ""); 
     let result: NSNumber! = channel.valueForKey("isLive") as! NSNumber; 
     print(result, terminator: ""); 

     if (result == 0) 
     { 
      let alertController = UIAlertController(title: "", message: "There is no live stream right now", preferredStyle: UIAlertControllerStyle.Alert) 
      alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default,handler: nil)) 

      self.presentViewController(alertController, animated: true, completion: nil) 
     } 

    } 
    catch 
    { 
     // TODO: handle 
    } 
}) 
+1

Ах хорошо, спасибо. Теперь я получаю ошибку 'type 'NSURLSession' не имеет имени пользователя sendAsynchrounousequest'' – BrittB

+1

Да, как я уже сказал, я не знаю, откуда вы получаете эту функцию. Он не является частью стандартного API 'NSURLSession', поэтому, возможно, он был добавлен в расширение или категорию где-то? Я не знаю, вам придется оглянуться назад, как этот звонок попал туда в первую очередь. –

+0

А, ок. Вы рекомендуете использовать что-то вместо 'sendAsynchrounousequest'? – BrittB

2

Вы должны заменить вашу

NSURLSession.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse?, data: NSData?, error: NSError?) -> Void in 

с

let session = NSURLSession.sharedSession() 
     session.dataTaskWithRequest(request) { (data, response, error) -> Void in 

     } 
+0

Прохладный, это исправило мою другую проблему. Спасибо! – BrittB