My current problem is that when the function updateLabels
is called my tableView freezes.
My goal is to update radio stations song names and titles every 15 seconds. I have a dict array that holds the info and the function that populates that dict array every 15s. Each station has a separate JSON
link file that I put into my getData
function parameters. What can I do to make it better and stop tableView to freeze?
main array
var songNames = [
(songArtist: "", songName: ""),
(songArtist: "", songName: ""),
.....
]
update songs title and names
func updateLabels() {
songNames.removeAll()
songNames.append((songArtist: getData("rd").artistName, songName: " - \(getData("record").songName)"))
songNames.append((songArtist: getData("mix").artistName, songName: " - \(getData("mix").songName)"))
tableView.reloadData()
}
get data from JSON link
func getData(urlPart: String) ->(artistName: String, songName: String) {
let mainURl = "http://...json"
let url = NSURL(string: mainURl)
let jsonData = NSData(contentsOfURL: url!) as NSData!
let readableJSON = JSON(data: jsonData, options: NSJSONReadingOptions.MutableContainers, error: nil)
let songArtistName = readableJSON["ARTIST"]
let songName = readableJSON["NAME"]
return (songArtistName.description, songName.description)
}
in my viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
updateLabels()
//**Timer to call the function every 15 sec**
NSTimer.scheduledTimerWithTimeInterval(15, target: self, selector: #selector(self.updateLabels), userInfo: nil, repeats: true)
}