ios - 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()
}
解决方案
问题是您一直在插入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)
推荐阅读
- java - 如何从角度发送可选参数并在 Java 控制器中捕获它们?
- r - If Else on variables and Merge in R
- c# - 如果有人当前已登录,请不要打开登录或注册页面
- xaml - 如何将页面中的条目与 ViewModel 绑定
- ios - Swift 中 iOS 的 SIP 连接 & 使用门电话实现音频和视频通话
- chatbot - 自定义回退策略消息
- node.js - 使用 NodeJS 用我的根控制器初始化控制器
- json - 从嵌套的 json 中提取数据并使用 postgresql 将其存储在不同的表中
- angular - Angular2+ 中的端口 49153 到底是什么?
- c# - 如何解码压缩的api响应?