0

在艺术家没有事件之前,我的应用程序运行良好。在下面的代码(整个代码的一部分)中,错误是由最后一行引起的。“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)

亲切的问候,

杰伦·凯维特

4

0 回答 0