0

アーティストのイベントがなくなるまで、私のアプリは正常に動作しています。以下のコード (コード全体の一部) では、最後の行が原因でエラーが発生しています。「case .Success:」は true です。コンソールで 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)

編集#「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)

敬具、

Jeroen Kiewiet

4

0 に答える 0