SwiftyJSON问题斯威夫特2

问题描述:

我有返回JSON数据,你可以在这里找到https://itunes.apple.com/us/rss/topmovies/limit=25/jsonSwiftyJSON问题斯威夫特2

我想回到所有的电影标题的这个JSON数据的API URL。

我正在使用SwiftyJSON框架来解析URL中的JSON数据。我正在使用NSURLSession.dataTask从URL开始分析。

问题是我想返回的JSON数据没有返回任何东西。

下面是一些代码 -

JSON数据URL -

let url = "https://itunes.apple.com/us/rss/topmovies/limit=25/json" 

检索JSON数据

func getTheJSONData() throws { 



    let theURL = NSURL(string: url) 

    let request = NSURLRequest(URL: theURL!) 


    //let JSONError : NSError? 



    let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration()) 

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


     do { 

      if error == nil{ 

      let swiftyJSON = JSON(data: data!, options: NSJSONReadingOptions.MutableContainers, error: nil) 

       let Name = swiftyJSON["feed"]["entry"][0]["im:name"]["label"].stringValue 


       //prints nil.. 
       print(Name) 


      } 


     } catch { 
      // report error 

      print(error) 
     } 

} 
    task.resume() 


} 
+0

我试过你的代码和[它工作](https://www.evernote.com/l/AFlfzCDnQ99H9Y9HttHhrhM9x-YEjdUEU10)(Xcode 7.0.1) – Moritz

+0

@EricD。它是否打印了电影名单? –

+0

看看我链接的截图。当然不是,因为你的代码要求*一个标题*。所以它打印标题。它不会在代码中显示您的评论,并且不打印'nil'。 – Moritz

您的代码不正是它应该:它打印一个电影的标题。

有了这个:

let Name = swiftyJSON["feed"]["entry"][0]["im:name"]["label"].stringValue 
print(Name) 

你得到一个电影的标题,因为你得到的数组的第一个元素[0]

由于您想获得所有电影片名,而不是使用第一个元素,请使用所有元素。例如:

let swiftyJSON = JSON(data: data!, options: NSJSONReadingOptions.MutableContainers, error: nil) 

let movies = swiftyJSON["feed"]["entry"].arrayValue 

let titles = movies.map { $0["im:name"]["label"].stringValue } 

print(titles) 

print(titles)给出标题的数组:

[ “侏罗纪世界”, “复仇者:的Ultron的年龄”, “间谍”, “明星伙伴”, “像素”,“Froning “,”Pitch Perfect 2“,”Cartel Land“,”Aladdin“,”Furious 7(Extended Edition)“,”Magic Mike XXL“,”\ '71“,”Adaline时代“,”Cast Away“ “灰姑娘(2015)”,“圣安地列斯”,“疯狂的麦克斯:狂暴之路”,“酒店特兰西瓦尼亚”,“帕丁顿”,“任务:不可能 - 幽灵协议”,“阿罗哈”,“涂料” “,”我和厄尔和垂死的女孩“,”过夜“]

顺便说一句,正如编译器说的警告,没有必要使用do catchJSON(),因为它不会抛出。

+0

非常感谢! –

+0

不客气。 – Moritz