Oui, ça se fait très bien de trier les données avec un sort()
et après, je ne sais pas quel type de données redescend de WeatherPro. Là, il y a juste la date mais il y a certainement moyen de faire en sorte de récupérer tout ce que l’API peut t’envoyer.
Je te mets le code modifié ici car j’ai pas fait de pull mais un download de ton projet.
Alamofire.request(url, headers:headers).responseJSON { response in
if let JSON = response.result.value as? [String: Any] {
if let forecast = JSON ["forecasts"] as? NSArray {
for element in forecast {
if let dict = element as? [String: Any],
let dates = dict ["validFrom"] as? String {
self.data.append(WeatherProData(date: dates))
self.sections = Array(Set(self.data.map({ (WeatherProData) -> String in
let jsonDateString = WeatherProData.date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXX"
if let weatherProDataDate = dateFormatter.date(from: jsonDateString) {
return french.string(from: weatherProDataDate)
} else {
return ""
}
})))
self.sections.forEach({ (string) in self.dateSection.append([])})
for index in 0..<self.sections.count {
self.data.forEach({ (data) in
let jsonDateString = data.date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXX"
let frenchDate:String
if let weatherProDataDate = dateFormatter.date(from: jsonDateString) {
frenchDate = french.string(from: weatherProDataDate)
} else {
frenchDate = ""
}
if frenchDate == self.sections[index] {
self.dateSection[index].append(data)
}
})
}
self.tableView.reloadData()
}
}
}
}
}
Et pour la partie mise en forme de la cellule (codée à l’arrache)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
// let datas = data[indexPath.row]
let dateString = dateSection[indexPath.section] [indexPath.row].date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXX"
let date = dateFormatter.date(from: dateString)
dateFormatter.dateFormat = "HH:mm"
let time = dateFormatter.string(from: date!)
cell.textLabel?.text = time
// cell.textLabel?.text = datas.date
self.tableView.addSubview(self.refreshControl)
return cell
}