首页 > 解决方案 > 在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”循环不起作用。我真的需要你的帮助。先感谢您

标签: jsonswiftfor-loopfilteralamofire

解决方案


您不需要 for 循环,因为过滤器已经为您执行此操作

// for var item in dataTagihan.data {
    self.tagihan = dataTagihan.data.filter({ $0.memberId == self.member })

self.tagihanmemberId包含所有数据self.member

接着reloadData

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

推荐阅读