为什么我在 swift 的表格视图中得到额外的单元格

Why I am getting extra cells in tableview in swift

这是Json响应: 作为响应,我只需要在表视图中显示oniTaag = 1联系人用户名如何?我得到 oniTaag = 0 contact userName 作为 tableview 中的标签为什么?

contacts JSON group member
["5555555544": {
oniTaag = 1;
profilePic = "<null>";
tagged = 0;
userId = a398056b39cb4d0fb3ad666b86abe2e1;
userName = "security test";
userType = personal;
}, 
"0000034500": {
oniTaag = 0;
profilePic = "<null>";
tagged = 0;
userId = "<null>";
userName = "<null>";
userType = personal;
}, 
"0000043251": {
oniTaag = 1;
profilePic = "<null>";
tagged = 0;
userId = 835e13f3b16f4d0d84384c4aa4e2c0b5;
userName = "daddy?s dad add";
userType = personal;
}]

这里 oniTaag = 1 意味着 true 我只需要在表格视图中显示那些联系人..但是这里 oniTaag = 0 联系人显示标签,单元格中的标签,为什么?

代码如下:

 import Contacts
 struct ContactDetailsJson {

var userId: String?
var onItag: Bool?
var taggedStat: Bool?
var userName: String?
var phnum: String?

init(userId: String, oniTaag: Bool, tagged: Bool, userName: String, key: String) {

    self.userId = userId
    self.onItag = oniTaag
    self.taggedStat = tagged
    self.userName = userName
    self.phnum = key
}
}

class GroupMembersViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var phoneNum: String?
  var contacts = [CNContact]()
 var phNumArray  = [String]()

  var onitag: Bool?
  var userNAme: String?
  var jsonArrayFilter = [ContactDetailsJson]()

@IBOutlet weak var groupMemTableview: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
    
     ContactsModel.shared.getLocalContacts {(contact) in
         self.contacts.append(contact!)
         print("all contects \(contact)")
         
         self.phNumArray = self.contacts.flatMap { [=12=].phoneNumbers }.map { [=12=].value.stringValue }
         
     }

     self.callPostApi()
}
func callPostApi() {

          let url            = URL(string: "http://filter/taggedusers/")!
          var request        = URLRequest(url: url)
         
          try? request.setMultipartFormData(["contactsList": "\(phNumArray)"], encoding: .utf8)
         
          URLSession.shared.dataTask(with: request) { data, _, _ in
              if let data = data, let jsonObj = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
                  print("contacts JSON group member\(jsonObj)")
                  let phnDict: [String : Any] = (jsonObj as? [String : Any])!

                  for (key, val) in phnDict{

                      let phnum: String = key as? String ?? ""
                      let phKey = val as! [String : Any]
                      let userId = phKey["userId"] as? String
                      let userNam = phKey["userName"]
                      self.taggedStatus = phKey["tagged"] as? Bool
                      self.onitag = phKey["oniTaag"] as? Bool
                      self.userNAme = phKey["userName"] as? String
                      
                      self.jsonArrayFilter.append(ContactDetailsJson(userId: userId ?? "", oniTaag: self.onitag ?? true, tagged: self.taggedStatus ?? true, userName: self.userNAme ?? "", key: phnum))
                  }
                  DispatchQueue.main.async {
                      self.groupMemTableview.reloadData()
                  }

              }
          }.resume()
      }
      
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
           return jsonArrayFilter.count
 }


    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
      
           var cell1: GroupMemberTableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath) as! GroupMemberTableViewCell
            
            jsonArrayFilter = jsonArrayFilter.filter { ([=12=].onItag ?? true) }

            let aJson = jsonArrayFilter[indexPath.row]
            
            if aJson.onItag == true{

                    cell1.nameLabel.text = aJson.userName
                    cell1.phnumLabel.text = aJson.phnum
            }
            return cell1
    }
}

获得如下输出:这里我不需要标签 label cell.. 意思是 oniTaag = 0 cell.. 怎么样?

请帮我写代码。

编辑:此处let aJson = jsonArrayFilter[indexPath.row]低于错误

error: Thread 1: Fatal error: Index out of range

因为你使用了所有数组而没有过滤,这个 if 语句没有命中

if aJson.onItag == true{ 
    cell1.nameLabel.text = aJson.userName
    cell1.phnumLabel.text = aJson.phnum  
}

对于具有 onItag = false 的模型,您会得到一个带有空标签的虚拟单元格,您需要在使用它之前过滤数组

   self.jsonArrayFilter.append(ContactDetailsJson(userId: userId ?? "", oniTaag: self.onitag ?? true, tagged: self.taggedStatus ?? true, userName: self.userNAme ?? "", key: phnum))
}
jsonArrayFilter = jsonArrayFilter.filter { [=11=].onItag ?? false }