2016-11-27 2 views
1

Я хочу использовать AlamofireObjectMapper в первый раз для синтаксического анализа json-ответа в swift. я замэпил так:JSON отображается в таблице

class ModelCurrency: Mappable { 

var success : Bool? 
    var terms  : String? 
    var privacy : String? 
    var timestamp : CGFloat? 
    var source : String? 
    var quotes : [Quotes]? 

    init() {} 

    required init?(map: Map) { 

    } 

    func mapping(map: Map) { 

     success<-map["success"] 
     terms<-map["terms"] 
     privacy<-map["privacy"] 
     timestamp<-map["timestamp"] 
     source<-map["source"] 
     quotes<-map["quotes"] 

     print("It json\(terms)") 
    } 
} 

class Quotes : Mappable { 

    var name : String? 
    var val : CGFloat? 

    required init?(map: Map) { 

    } 

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

и моего контроллер

var arrayTable = [String]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tableView.delegate = self 
     tableView.dataSource = self 

     super.viewDidLoad() 
     let URL = "http://www.apilayer.net/api/live?access_key=ad847a0a855c0647590df2b818923025" 

     Alamofire.request(URL).responseObject { (response: DataResponse<ModelCurrency>) in 

      let currency = response.result.value!; 

      for quotes in currency.quotes! { 


       self.arrayTable.append(quotes.name!) 

      } 
     } 

    } 


    override func numberOfSections(in tableView: UITableView) -> Int { 

     return 5} 

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return arrayTable.count } 


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


     cell.textLabel?.text = self.arrayTable[indexPath.row] 


     return cell 
     } 

Я хочу цитату массива отображается в Tableview. Как это сделать ?

ответ

0

Я думаю, что вам нужно reload табличном после того, как вы обновили в источнике данных arrayTable:

... 
for quotes in currency.quotes! { 
    self.arrayTable.append(quotes.name!) 
} 
self.tableView.reloadData() 
... 

Кроме того, вам не нужно вызывать super.viewDidLoad() дважды.

+0

очень приятно спасибо) –

Смежные вопросы