1

makeRequest()次のコードを使用して、 UITableViewController 内にメソッドがあります。

    func makeRequest() {

    Alamofire.request(.GET, self.foursquareEndpointURL, parameters: [
        //"VENUE_ID" : self.foursquareVenueID,
            "client_id" : self.foursquareClientID,
            "client_secret" : self.foursquareClientSecret,
            "v" : "20140806"
            ])
        .responseJSON(options: nil) { (_, _, data, error) -> Void in
        if error != nil {
            println(error?.localizedDescription)
        } else if let data: AnyObject = data {
            let jObj = JSON(data)
            if let venue = jObj["response"]["venue"].dictionaryValue as [String: JSON]? {
                self.responseitems = jObj
                println("venue is: \(venue)")
            }
            dispatch_async(dispatch_get_main_queue()) {
                self.tableView.reloadData() // Update UI
            }
        }
    }
}

また、私には財産があることを覚えておいてくださいvar responseitems:JSON = []

println("venue is: \(venue)")コンソールに見栄えの良い応答を出力するので、それが正しく機能していることがわかります...

bindData()次のコードのメソッドを持つカスタム UITableViewCell クラスもあります。

func bindData() {
    println("VenueDetailHeaderCell data did set")
    self.venueDetailTitleLabel.text = self.headerInfo?["name"].stringValue
    let labelData = self.headerInfo?["name"].stringValue
    println("labelData is: \(labelData)")
}

ご覧のとおり、JSON 応答で UILabel のテキストを ["name"].stringValue に設定しようとしています。ただし、println("labelData is: \(labelData)")labelData のコンソール出力を取得すると、明らかに空である Optional("") です。

ここに私がつかもうとしているもののスクリーンショットがあります

ここに画像の説明を入力

ここで何が間違っていますか?また、会場の名前を取得して UILabel を割り当てるにはどうすればよいですか?

アップデート:

次のコードを試しました

let labelData = self.headerInfo?["name"].error
    println("labelData is: \(labelData)")

そして、次のコンソール出力を取得します。誰にとっても役に立ちます。ここで本当に混乱しています...何かアイデアはありますか?

4

2 に答える 2

0

解析方法は次のとおりです

element: JSONValue //Something with JSONValue
if let title = element["name"]?.string {
    cell.title.text = title
}
于 2015-04-19T04:12:18.810 に答える