Для обработки данных json используйте SwiftyJSON
установите эту стороннюю библиотеку, используя cocoapods
Сначала объявите ваш list
как переменную внутри NotificationHistory
класса как
var list = [[String: AnyObject]]()
Добавитьэтот код для вашего обработчика завершения getNotifiction
теперь ваш код выглядит следующим образом
func getNotifiction(completionHandler: @escaping (AnyObject?, NSError?) -> ()){
Alamofire.request(urlStringChecking,method: .get)
.responseJSON{ response in
switch response.result{
case .success:
if ((response.result.value) != nil){
let jsonData = JSON(response.result.value!)
if let mydata = jsonData["list"].arrayObject {
self.list = mydata as! [[String: AnyObject]]
}
self.tableView.reloadData()
completionHandler(self.list, nil)
}
case .failure( _):
print(response.result.error as Any)
}
}
}
И для вызова этой функции напишите self.GetNotificationHistory()
внутри вашего viewDidLoad()
На этот раз у нас есть правильные данныев переменной list
, теперь пришло время реализовать новый код в tableview
Здесь не нужно изменять
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return list.count
}
Нужны некоторые изменения в вашем коде
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let reuseIdentifier = "NotificationCell"
let newListValue = list[indexPath.row] // assign new values in diff variable
var cell:UITableViewCell? = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier) as UITableViewCell?
if (cell == nil) {
cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: reuseIdentifier)
}
cell?.textLabel?.numberOfLines = 0
cell!.textLabel?.text = newListValue[indexPath.row] as? String
cell!.detailTextLabel?.text = newListValue[indexPath.row] as? String
return cell!
}
response.result.value
содержит простой массив для обработки его как JSON, мы можем использовать его как
response.result.value as? [[String:String]]
или использовать SwiftyJSON
: D