Guest User

Untitled

a guest
Oct 18th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. func getJSON(completionHandler: @escaping (Bool) -> ()) {
  2. let jsonUrlString = "https://api.nytimes.com/svc/topstories/v1/business.json?api-key=f4bf2ee721031a344b84b0449cfdb589:1:73741808"
  3. guard let url = URL(string: jsonUrlString) else {return}
  4.  
  5. URLSession.shared.dataTask(with: url) { (data, response, err) in
  6. guard let data = data, err == nil else {
  7. print(err!)
  8. return
  9. }
  10.  
  11. do {
  12. let response = try
  13. JSONDecoder().decode(TopStoriesResponse.self, from: data)
  14.  
  15. // Pass results into arrays (title, abstract, url, image)
  16. for result in response.results {
  17. let headlines = result.title
  18. let abstracts = result.abstract
  19. let url = result.url
  20.  
  21. self.headlines.append(headlines)
  22. self.abstracts.append(abstracts)
  23. self.urls.append(url)
  24. }
  25.  
  26. let imageResponse = try
  27. JSONDecoder().decode(Story.self, from: data)
  28. for imageResults in imageResponse.multimedia {
  29. let images = imageResults.url
  30. self.images.append(images)
  31. }
  32.  
  33. completionHandler(true)
  34.  
  35.  
  36. } catch let jsonErr {
  37. print("Error serializing JSON", jsonErr)
  38. }
  39. }.resume()
  40. }
  41.  
  42. struct TopStoriesResponse: Decodable {
  43. let status: String
  44. let results: [Story]
  45. }
  46.  
  47. struct Story: Decodable {
  48. let title: String
  49. let abstract: String
  50. let url: String
  51. let multimedia: [Multimedia]
  52. }
  53.  
  54. struct Multimedia: Codable {
  55. let url: String
  56. let type: String
  57. }
  58.  
  59. var headlines = [String]()
  60. var abstracts = [String]()
  61. var urls = [String]()
  62. var images = [String]()
  63.  
  64. getJSON { (true) in
  65. print("Success")
  66. print("nnHeadlines: (self.headlines)nnAbstracts: (self.abstracts)nnURLS: (self.urls)nnImages: (self.images)")
  67. }
  68.  
  69. let imageResponse = try
  70. JSONDecoder().decode(Story.self, from: data)
  71. for imageResults in imageResponse.multimedia {
  72. let images = imageResults.url
  73. self.images.append(images)
  74. }
  75.  
  76. multimedia: ""
Add Comment
Please, Sign In to add comment