首页 > 解决方案 > JSON 有问题 - 数据重复

问题描述

我有一个应用程序,问题是重复 tableView 中的数据。

如何修复 Array 中的数据复制?

func jsonGet(page: Int) {
    let pathFull = "https://test.com"
    guard let url = URL(string: pathFull) else {return} //
    URLSession.shared.dataTask(with: url) { (data, response, err) in
        guard let data = data else {return}
        do {
            let posts =  try JSONDecoder().decode(JobsData.self, from: data)
            for post in posts.jobs.data {
                self.newsPost.append(post)
            }

            DispatchQueue.main.async {
                self.tableView.reloadData()
            }

        } catch let jsonErr {
            self.alertViewBaisc(title: "erorr", text: "error", button: "ok")
            print("Error serializing json", jsonErr)
        }
        }.resume()
}

标签: iosswift

解决方案


问题是您一直在插入newsPost数据,请参阅 self.newsPost.append(post)

将您的代码替换为

func jsonGet(page: Int) {
    let pathFull = "https://test.com"
    guard let url = URL(string: pathFull) else {return} //
    URLSession.shared.dataTask(with: url) { (data, response, err) in
        guard let data = data else {return}
        do {
            let posts =  try JSONDecoder().decode(JobsData.self, from: data)
            var tempPost = [DataType]()
            for post in posts.jobs.data {
                tempPost.append(post)
            }
           self. newsPost =  tempPost

            DispatchQueue.main.async {
                self.tableView.reloadData()
            }

        } catch let jsonErr {
            self.alertViewBaisc(title: "erorr", text: "error", button: "ok")
            print("Error serializing json", jsonErr)
        }
        }.resume()
}

另一种方法是您可以检查帖子是否已经在您的数组中

(self. newsPost.filter{$0.uniqueKey == post.uniqueKey}.count == 0)


推荐阅读