在json响应中过滤和循环数据
我是个初学者,仍然在学习斯威夫特。我想得到的数据只有当他们有相同的ID,而且我做了一个循环使用“for”。它将检查是否不再存在具有相同ID的数据,它将停止循环。这是我的密码在json响应中过滤和循环数据,json,swift,for-loop,filter,alamofire,Json,Swift,For Loop,Filter,Alamofire,我是个初学者,仍然在学习斯威夫特。我想得到的数据只有当他们有相同的ID,而且我做了一个循环使用“for”。它将检查是否不再存在具有相同ID的数据,它将停止循环。这是我的密码 AF.request(url, method: .get, parameters: params, encoding: URLEncoding.default, headers: header) .validate() .responseJSON { (response) in
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 var item in dataTagihan.data {
self.tagihan = dataTagihan.data.filter({ $0.memberId == self.member })
self.tagihan
包含memberId
为self.member
然后重新加载数据
DispatchQueue.main.async {
self.tableView.reloadData()
}
在循环的每次迭代中,您都要替换
self.tagihan
。这就是你想要的吗dataTagihan.data.filter
已经对数组进行了迭代,因此,如果您试图获取过滤数组,则不必将其放入循环中。我认为您不需要循环。。。请删除for循环,然后检查…结果仍然相同。它只显示具有相同id的第一个数据。我希望如果用户单击tableview中的每一行,它将显示不同的数据,在我的情况下,现在它只显示第一个数据,而不检查其他数据是否具有相同的成员id