SwiftyJSON 问题 Swift 2

标签: json Swift
发布时间: 2017/3/5 13:13:35
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

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

我想在此 JSON 数据中返回所有电影片名。

我使用 SwiftyJSON 框架来解析 JSON 数据的 url。我用 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()


}

解决方法 1:

您的代码是否它为了什么︰ 它会打印标题的一部电影。

为此︰

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","俯仰完美 2","卡特尔土地","阿拉丁","愤怒 7 (加长版)","神奇迈克 XXL"、"\'71","自适应线性神经元时代","漂流"、"灰姑娘 (2015 年)"、"圣安地列斯","疯狂的麦克斯︰ 愤怒之路","酒店特兰西瓦尼亚"、"帕丁顿","使命︰ 不可能-幽灵Protocol","阿罗哈","涂料","线人","我和伯爵和垂死的女孩","一夜之间"]

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

赞助商