json - 在json响应swift中过滤和循环数据
问题描述
我是初学者,仍在学习 Swift。只有当它们具有相同的 ID 并且我使用“for”进行循环时,我才想获取数据。它将检查是否没有具有相同 ID 的数据,它将停止循环。这是我的代码
AF.request(url, method: .get, parameters: params, encoding: URLEncoding.default,
headers: header)
.validate()
.responseJSON { (response) in
guard let data = response.data else {return}
do{
let dataTagihan = try JSONDecoder().decode(Tagihan.self, from: data)
let tagihanId = dataTagihan.data[0].tagihanId
let memberId = dataTagihan.data[0].memberId
let saveMember = KeychainWrapper.standard.set(memberId, forKey: "memberId")
let saveTagihanId = KeychainWrapper.standard.set(tagihanId, forKey:
"tagihanId")
print("Tagihan Saved \(saveTagihanId)")
print("MemberId \(saveMember)")
for var item in dataTagihan.data {
self.tagihan = dataTagihan.data.filter({ (value) -> Bool in
if value.memberId == self.member {
item.memberId = self.member!
}
return value.memberId == self.member
})
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
} catch{
print("error\(error)")
}
}
我执行此代码,结果是我只得到一个具有相同 ID 的数据,并且“for”循环不起作用。我真的需要你的帮助。先感谢您
解决方案
您不需要 for 循环,因为过滤器已经为您执行此操作
// for var item in dataTagihan.data {
self.tagihan = dataTagihan.data.filter({ $0.memberId == self.member })
self.tagihan
memberId
包含所有数据self.member
接着reloadData
DispatchQueue.main.async {
self.tableView.reloadData()
}
推荐阅读
- xcode - 故事板变成红色并且 main.storyboard 在点击后没有显示任何内容
- amazon-web-services - 如何使用 S3 和 Cloudfront 对单个域进行 301 重定向(HTTP 到 HTTPS)&&(www 到非 www)?
- slack - Slack 集成:链接 slack 用户和来自 3rd 方 Web 服务的用户
- python - 如何将某个字符串上方和下方的文本行匹配到另一个字符串 - RegEx
- docker - 在创建其他服务之前,等待 docker compose 中的 mysql 服务准备好
- php - 使用 Facebook 登录,将数据发送到 MySQL/PHP 数据库
- python - Sympy evalf 不适用于 2 个变量表达式中的 1 个变量 subs()
- javascript - 使用对象键作为列名将对象的 JSON 数组插入到 postgreSQL
- excel - 值匹配时返回工作表#
- eventbrite - 不同的事件状态值记录在哪里?