SwiftyJSON 问题 Swift 2

SwiftyJSON Problems Swift 2

我有一个 API URL return JSON 数据,你可以在这里找到 https://itunes.apple.com/us/rss/topmovies/limit=25/json

我想要 return 此 JSON 数据中的所有电影片名。

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

问题是我想要 return 的 JSON 数据没有 returning 任何东西。

这是一些代码 -

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()


}

您的代码完全按照预期执行:它打印电影的标题。

有了这个:

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 { [=11=]["im:name"]["label"].stringValue }

print(titles)

print(titles) 给出了一个标题数组:

["Jurassic World", "Avengers: Age of Ultron", "Spy", "Entourage", "Pixels", "Froning", "Pitch Perfect 2", "Cartel Land", "Aladdin", "Furious 7 (Extended Edition)", "Magic Mike XXL", "\'71", "The Age of Adaline", "Cast Away", "Cinderella (2015)", "San Andreas", "Mad Max: Fury Road", "Hotel Transylvania", "Paddington", "Mission: Impossible - Ghost Protocol", "Aloha", "Dope", "Man on Wire", "Me and Earl and the Dying Girl", "The Overnight"]

顺便说一下,正如编译器在警告中所说的那样,没有必要为 JSON() 使用 do catch,因为它不会抛出。