2016-09-28 192 views
0

我在尝试从Google博客解析某些JSON时出错。在Swift中解析json时出错

我收到的错误是

'Invalid conversion from throwing function of type '(_, _, _) throws -> Void' to non-throwing function type '(NSData?, NSURLResponse?, NSError?) -> Void' 

我身边有一派,我知道这是什么做追赶的错误,但我想不出它到底是什么,任何帮助将不胜感激:

import UIKit 
import CoreData 

class MasterViewController: UITableViewController { 

var detailViewController: DetailViewController? = nil 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    let url = NSURL(string: "https://www.googleapis.com/blogger/v3/blogs/10861780/posts?key=AIzaSyBwmI4AzMnBmr7oSVeL0EHdzMjXV1aATnQ") 

    let session = NSURLSession.sharedSession() 

    let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in 
    if error != nil { 
      print(error) 
     } else { 
      //print(NSString(data: data!, encoding: NSUTF8StringEncoding)) 

      do { 

      let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
      if jsonResult.count > 0 { 

       if let items = jsonResult["items"] as? NSArray { 
        for items in items { 
         print(items) 

        } 
+0

添加“抓让误差NSError { 打印(error.localizedDescription) }” – Ragul

+0

如果有这样的在右括号后的底部刚过打印(项目)增加?如果不是我应该添加这个吗?谢谢! –

+0

add do {} – Ragul

回答

0

试试这个。我纠正了你的错误,只加了一些括号。

override func viewDidLoad() { 
    super.viewDidLoad() 

let url = NSURL(string: "https://www.googleapis.com/blogger/v3/blogs/10861780/posts?key=AIzaSyBwmI4AzMnBmr7oSVeL0EHdzMjXV1aATnQ") 

let session = NSURLSession.sharedSession() 

let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in 

    if error != nil { 
    print(error) 
    } else { 
    //print(NSString(data: data!, encoding: NSUTF8StringEncoding)) 
    do { 

     let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions(rawValue: 0)) as! NSDictionary 
     if jsonResult.count > 0 { 

     if let items = jsonResult["items"] as? NSArray { 
      for items in items { 
      print(items) 

      } 
     } 
     } 
    } catch let error as NSError { 
     print(error) 
    } 
    } 
}) 
    task.resume() 

} // end braces of view did load 
+0

这已编译好,似乎并没有显示任何错误谢谢,除了预期的输出不显示:S –

+0

现在尝试。现在应该工作正常 – Sahil

+0

害怕说它仍然没有打印博客通知( –

0

试试这个,

do { 
     let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
     if jsonResult.count > 0 { 

      if let items = jsonResult["items"] as? NSArray { 
       for items in items { 
        print(items) 

       } 
      } 
    }catch{ 
      print("Something wrong") 
     } 

并替换该行

let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in 

let task = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in 
+0

嗨,我试了这个,并收到相同的两个错误,'无效转换等投掷等。'和'连续的语句在一条线上必须分开';' –

+0

回答更新尝试上述 – Ragul

+0

如果它不起作用,请在代码窗口上传错误代码的屏幕截图 – Ragul