My app is working fine until an artist has no events. In the code below (a part of the whole code) the error is caused by the last line. The "case .Success:" is true because in the console I can see the json data. So the request and the response are good but "event" is not part of the returned json data when the selected artist has no upcoming events. Because "event" does not exist the app is crashing.
How can you prevent a crashing app when no events are present?
Hope you can help me.
Alamofire.request(.GET, "http://api.songkick.com/api/3.0/artists/\(songkickId)/calendar.json?apikey=myapikey").validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
let json = JSON(value)
// show the results of the request in the console
print("JSON: \(json)")
// get specific data from the result
let resultsPage = json["resultsPage"]
let results = resultsPage["results"]
let totalEntries = resultsPage["totalEntries"]
print("huh?: \(totalEntries)")
let events = results["event"].array!
var eventNumber = 0
var maxEventNumberReached = false
var gigNameInfoText: [String] = Array()
var gigVenueInfoText: [String] = Array()
var gigDateInfoText: [String] = Array()
var gigLocationInfoText: [String] = Array()
var gigTicketInfoText: [String] = Array()
while (maxEventNumberReached == false) {
if eventNumber != events.count {
print("")
let name = events[eventNumber]["displayName"].string!
print("Naam van het feestje?: \(name)")
gigNameInfoText.append(name)
let venue = events[eventNumber]["venue"]
let venueName = venue["displayName"].string!
print("Wie organiseert het feestje?: \(venueName)")
gigVenueInfoText.append(venueName)
let date = events[eventNumber]["start"]
let yyyymmdd = date["date"].string!
print("Wanneer is het feestje?: \(yyyymmdd)")
gigDateInfoText.append(yyyymmdd)
Edit# Using the "if totalEntries != 0 {" solved my problem.
Alamofire.request(.GET, "http://api.songkick.com/api/3.0/artists/\(songkickId)/calendar.json?apikey=dC0drfE1zUZi0z0c").validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
let json = JSON(value)
// show the results of the request in the console
print("JSON: \(json)")
// get specific data from the result
let resultsPage = json["resultsPage"]
let results = resultsPage["results"]
let totalEntries = resultsPage["totalEntries"]
if totalEntries != 0 {
let events = results["event"].array!
var eventNumber = 0
var maxEventNumberReached = false
var gigNameInfoText: [String] = Array()
var gigVenueInfoText: [String] = Array()
var gigDateInfoText: [String] = Array()
var gigLocationInfoText: [String] = Array()
var gigTicketInfoText: [String] = Array()
while (maxEventNumberReached == false) {
if eventNumber != events.count {
print("")
let name = events[eventNumber]["displayName"].string!
print("Naam van het feestje?: \(name)")
gigNameInfoText.append(name)
Kind Regards,
Jeroen Kiewiet