У меня возникла проблема с одним из моих табличных представлений, я расшифровал JSON и поместил результат в свои ячейки, проблема в том, что каждый раз, когда я закрываю представление и возвращаюсь к нему, предыдущие элементы все еще остаются здесь:Удалить предыдущий элемент tableview Swift
Я думаю, что я что-то делать с ReloadData, но я не знаю, что.
Мой код:
//Retrieving JSON DATA :
var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary
var DataFromJSon = jsonResult["objects"] as! NSArray
for one in DataFromJSon {
let repo = Repository(jsonData: one as! [String : AnyObject])
repos.append(repo)
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell
if (cell != nil)
{
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle,reuseIdentifier: "Cell")
}
cell!.textLabel?.text = repos[indexPath.row].title
cell!.detailTextLabel?.text = repos[indexPath.row].price
//on récupère l'url de l'image dans "Repository" et on la convertis en data exploitable
let urlString: NSString = repos[indexPath.row].picture_url! ,
imgURL = NSURL(string: urlString as String)
if let url = NSURL(string: urlString as String) {
// If this image is already cached, don't re-download
if let img = imageCache[urlString as String] {
cell!.imageView?.image = img
cell!.imageView?.frame = CGRectMake(5,5,35,35)
println("image présente")
}
else {
// The image isn't cached, download the img data
// We should perform this in a background thread
let request: NSURLRequest = NSURLRequest(URL: imgURL!)
let mainQueue = NSOperationQueue.mainQueue()
NSURLConnection.sendAsynchronousRequest(request, queue: mainQueue, completionHandler: { (response, data, error) -> Void in
if error == nil {
// Convert the downloaded data in to a UIImage object
let image = UIImage(data: data)
// Store the image in to our cache
self.imageCache[urlString as String] = image
// Update the cell
dispatch_async(dispatch_get_main_queue(), {
if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) {
cellToUpdate.imageView?.image = image
cellToUpdate.imageView!.frame = CGRectMake(5,5,35,35)
println("image reload")
}
})
}
else {
println("Error: \(error.localizedDescription)")
}
})
}
}
return cell!
}
Как я могу решить эту проблему?
Спасибо!
Похоже, что вы * добавляете * недавно измененные данные вместо того, чтобы переписывать старые данные. – Michal
Возможно, вам нужна часть моего кода? – f1rstsurf
Это прояснит все, да. – Michal