Я использую JSON для анализа данных и пытаюсь получить песни, изображения и previewURL из Spotify. Я думаю, что это не нравится, что я пытаюсь добавить это как строку. Но previewURL - это строка. Я также включил мою структуру, которая находится за пределами контроллера представления.
struct post {
let mainImage : UIImage!
let name : String!
let previewURl : String!
}
class GuestPartyViewController: UITableViewController,UISearchBarDelegate {
lazy var searchURL = "https://api.spotify.com/v1/search?q=Kanye%20West&type=track&access_token=\(spotifyAccessToken!)"
typealias JSONStandard = [String : AnyObject]
var posts = [post]()
func parseData(JSONData: Data){
do{
var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONStandard
if let tracks = readableJSON["tracks"] as? JSONStandard{
if let items = tracks["items"] as? [JSONStandard] {
for i in 0..<items.count{
let item = items[i]
let name = item["name"] as! String
print(item)
let previewURL = item["preview_url"] as! String //Here I get the Thread 1: signal SIGABRT error.
if let album = item["album"] as? JSONStandard{
if let images = album["images"] as? [JSONStandard]{
let imageData = images[0]
let mainImageUrl = URL(string: imageData["url"] as! String)
let mainImageData = NSData(contentsOf: mainImageUrl!)
let mainImage = UIImage(data: mainImageData as! Data)
posts.append(post.init(mainImage: mainImage, name: name,previewURl: previewURL)) //I think that it doesn't like that I am casting it in as a string here.
self.tableView.reloadData()
}
}
}
}
}
}
catch{
print(error)
}
}