在艺术家没有事件之前,我的应用程序运行良好。在下面的代码(整个代码的一部分)中,错误是由最后一行引起的。“case .Success:”是真的,因为在控制台中我可以看到 json 数据。所以请求和响应都很好,但是当所选艺术家没有即将发生的事件时,“事件”不是返回的 json 数据的一部分。因为“事件”不存在,所以应用程序正在崩溃。
当没有事件存在时,如何防止应用程序崩溃?
希望您能够帮助我。
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# 使用“if totalEntries != 0 {”解决了我的问题。
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)
亲切的问候,
杰伦·凯维特