2015-10-06 71 views
0

我有返回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

回答

0

您的代碼不正是它應該:它打印一個電影的標題。

有了這個:

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