2017-06-02 3 views
0

私はビットコインの価格データを解析しているビューコントローラを持っています。この関数は正常に応答してデータを解析しますが、tableViewに表示することはできません。tableViewセルにデータが表示されない、問題点は何ですか? (Swift 3)

私は既にコンセントとアイデンティティをテストセルでテストしていますが、です。

私は間違っていますか?

コード: `

import UIKit 
import Alamofire 
import AlamofireObjectMapper 
import ObjectMapper 

class Response: Mappable{ 
    var data: [Amount]? 

required init?(map: Map){ 

} 
    func mapping(map: Map) { 
    data <- map["data"] 
    } 
} 

class Amount: Mappable { 
    var data : String? 

    required init?(map: Map){ 

} 
    func mapping(map: Map) { 
    data <- map["data.amount"] 
    } 
} 

class ViewController: UIViewController, UITableViewDelegate, 
UITableViewDataSource { 
    var mount = [String]() 
    var am = [String]() 



    @IBOutlet var tableView: UITableView! 


func Call_bitcoin() { 
    let url = "https://api.coinbase.com/v2/prices/BTC-USD/buy" 
    Alamofire.request(url).responseObject{ (response: DataResponse<Amount>) in 
     let mount = response.result.value 
     let am = mount?.data 


     self.tableView.reloadData() 

     return 


    } 
} 





    override func viewDidLoad() { 
    super.viewDidLoad() 

    self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") 
    tableView.delegate = self 
    tableView.dataSource = self 
    Call_bitcoin() 
} 


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return am.count 
} 


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    print("You tapped cell number \(indexPath.row).") 
} 


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 

    print(am) 
    cell.textLabel?.text = am[indexPath.row] 
    return cell 
} 

} 

`

+0

'tableView.dataSource = self'と' tableView.delegate = self'を設定しましたか? – Legonaftik

+0

セルが表示されない場合は、おそらく 'am.count'が返されます。0 –

答えて

0

あなたCall_bitcoin()機能に要素を追加したいが、あなたは間違ってそれをやっています。 var am = [String]()を既に作成しています。したがって、let am = mount?.dataを使用する必要はありません。すでに作成されているam変数にデータを追加することができます。

から:

let mount = response.result.value 
let am = mount?.data 

へ:あなたはCall_bitcoin()機能であなたのコード行の一部を変更する必要が

let mount = response.result.value 
am.append(mount?.data) // This part should be set by your 'mount?.data' value type 
+0

ありがとうございます!これは大抵正しいものでした。 Xcodeは私に叫んでこれをこれに変えた:self.am.append((mount?.data)!) – hisairnessag3

+0

あなたは大歓迎です:) – kkakkurt

0
配列を返すないあなたのJSONは、それはあなたが

を取得する理由dictionary.that持っています

am.count = 0 

最初にデータを解析し、データを配列に格納します。

{"data":{"amount":"2414.88","currency":"USD"},"warnings":[{"id":"missing_version","message":"Please supply API version (YYYY-MM-DD) as CB-VERSION header","url":"https://developers.coinbase.com/api#versioning"}]} 
関連する問題