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()
}
您的代码不正是它应该:它打印一个电影的标题。
有了这个:
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 catch
为JSON()
,因为它不会抛出。
非常感谢! –
不客气。 – Moritz
我试过你的代码和[它工作](https://www.evernote.com/l/AFlfzCDnQ99H9Y9HttHhrhM9x-YEjdUEU10)(Xcode 7.0.1) – Moritz
@EricD。它是否打印了电影名单? –
看看我链接的截图。当然不是,因为你的代码要求*一个标题*。所以它打印标题。它不会在代码中显示您的评论,并且不打印'nil'。 – Moritz