Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在json响应中过滤和循环数据_Json_Swift_For Loop_Filter_Alamofire - Fatal编程技术网

在json响应中过滤和循环数据

在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

我是个初学者,仍然在学习斯威夫特。我想得到的数据只有当他们有相同的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 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