Mon problème est que j'ai la fonction getData()
sur le ViewDidLoad()
et quand je passe à une autre vue et retourne à cette vue, elle charge de nouveau les données qui dupliquent mes données sur la tableView.Duplication des données lors de l'extraction de la fonction JSON appelée
var items = [Items]()
func getData() {
Alamofire.request(url, method: .get).validate().responseJSON { response in
self.obj.helper.checkConnectivity()
switch response.result {
case .success(let value):
let json = JSON(value)
let jsonArray = json[].arrayValue
for json in jsonArray {
let item = Items.fromJson(json: json)
self.items.append(item)
}
case .failure(let error):
print(error)
}
self.tableView.reloadData()
}
}
struct Items {
var id: Int
var name: String
static func fromJson(json: JSON) -> Items {
return Items(
id: json["id"].intValue,
name: json["name"].stringValue,
}
}
Cela dépend. Pourquoi appelez-vous encore? Vous demandez à nouveau les mêmes données, non? Alors évitez de l'appeler à nouveau? Ou cherchez-vous une API paginée? – Larme
@Larme J'appelle getData() sur ViewDidLoad() donc je l'appelle une seule fois sur ViewController. –
pourquoi rechargez-vous la page? Si elle est chargée et que vous naviguez vers une autre page, puis que vous retournez, vous devriez juste obtenir viewDidAppear - êtes-vous en train de forcer un déchargement de la vue dans le cadre de votre navigation? Si vous avez besoin de décharger la page, vous devez supprimer toutes les données dans le cadre du déchargement - s'il est valide pour conserver les données du formulaire, vous ne devriez pas supprimer le formulaire ... – Russell