SwiftyJSON 问题 Swift 2
Posted
技术标签:
【中文标题】SwiftyJSON 问题 Swift 2【英文标题】:SwiftyJSON Problems Swift 2 【发布时间】:2015-10-06 20:52:24 【问题描述】:我有一个返回 JSON 数据的 API URL,你可以在这里找到它https://itunes.apple.com/us/rss/topmovies/limit=25/json
我想返回这个 JSON 数据中的所有电影片名。
我正在使用 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()
【问题讨论】:
我试过你的代码和it worked (Xcode 7.0.1) @EricD。它是否打印了电影标题列表? 看我链接的截图。当然不是,因为您的代码要求一个标题。所以它打印标题。正如您在代码中所说的那样,它不会打印nil
。
@EricD。有没有办法检索多个电影名称?
当然可以。 :) 我为你做了回答。
【参考方案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)
给出一个标题数组:
[“侏罗纪世界”、“复仇者联盟:奥创纪元”、“间谍”、“随行人员”、“像素”、“Froning”、“Pitch Perfect 2”、“Cartel Land”、“Aladdin”、“Furious 7(加长版)”、“Magic Mike XXL”、“\'71”、“Adaline 时代”、“Cast Away”、“Cinderella (2015)”、“San Andreas”、“Mad Max: Fury Road” , “特兰西瓦尼亚酒店”, “帕丁顿”, “不可能的任务 - 幽灵协议”, “阿罗哈”, “涂料”, “电线上的男人”, “我和厄尔与垂死的女孩”, “一夜之间”]
顺便说一句,正如编译器在警告中所说,没有必要将do catch
用于JSON()
,因为它不会抛出。
【讨论】:
以上是关于SwiftyJSON 问题 Swift 2的主要内容,如果未能解决你的问题,请参考以下文章
Swift 2 + SwiftyJSON:使用未解决的标识符错误
“当前 SwiftyJSON(通过 Swift 3.0.2)无法使用 Swift 3.1 导入”的原因是啥
Swift 2 SwiftyJSON API 数据到 UITableView