Arrays 填充UITableView节标题,因为节==2?

Arrays 填充UITableView节标题,因为节==2?,arrays,swift,uitableview,Arrays,Swift,Uitableview,我有一个名为firstData的服务器响应数组,它有12个元素。。里面有一堆字典,我做了一些筛选,将它分成3个不同的数组,如下所示: //filter to get all type Switch into one array. self.dataSwitchOnly = self.firstData.filter { $0.type.rawValue == "Switch" }// 7 elements

我有一个名为
firstData
的服务器响应数组,它有12个元素。。里面有一堆字典,我做了一些筛选,将它分成3个不同的数组,如下所示:

    //filter to get all type Switch into one array.
    self.dataSwitchOnly = self.firstData.filter {
                    $0.type.rawValue == "Switch"
                }// 7 elements

//looping dataSwitchOnly to get all shop type.
                for i in 0..<self.dataSwitchOnly.count {
                    if (self.dataSwitchOnly[i].search_key == "shop_type" || self.dataSwitchOnly[i].search_key == "is_certified"){
                        self.shopTypeArr.append(self.dataSwitchOnly[i])
                    }
                }// 2 elements

//filter original data to get all elements are not have type Switch.
                self.dataAfterFilterSwitch = self.firstData.filter {
                    $0.type.rawValue != "Switch"
                }//5 elements
//return filtered array which is not type `Switch` then + 2 more static section 0 and 1.
    return dataAfterFilterSwitch.count + 2
因为
shopTypeArr
dataSwitchOnly
没有相同的名称。因此,我必须硬编码标题,他们在第0节是快速过滤器和第1节是商店类型

现在,我想将我的
dataAfterFilterSwitch
从第2节显示到tableView的末尾。但是,当我将
dataAfterFilterSwitch[section]
设置为获取属性
name
时,我得到的错误
索引超出了范围。也许我的问题太让你们困惑了,但我可以提供更多的代码来解决这个问题

我的代码逻辑哪里出错了

我的
标题视图部分

let itemFilter = self.dataAfterFilterSwitch[section-2]
//        header.isCollapse =  collapse[section]
//        header.delegate = self
        if section == 0 {
            let data = SectionHeaderModel(sectionTitle: "Quick Filter".uppercased())
            if header.isCollapse == 0 {
                header.sectionComponents?.bind(data: data, state: .collapse, imageState: ImageDataType.image(UIImage(named: "icon-24-chevron-bottom")!), target: self, selector:nil)
            }else {
                header.sectionComponents?.bind(data: data, state: .collapse, imageState: ImageDataType.image(UIImage(named: "icon-24-chevron-top")!), target: self, selector:nil)
            }
            return header
        }else if section == 1 {
            let data = SectionHeaderModel(sectionTitle: "Shop Type".uppercased())
            if header.isCollapse == 0 {
                header.sectionComponents?.bind(data: data, state: .collapse, imageState: ImageDataType.image(UIImage(named: "icon-24-chevron-bottom")!), target: self, selector:nil)
            }else {
                header.sectionComponents?.bind(data: data, state: .collapse, imageState: ImageDataType.image(UIImage(named: "icon-24-chevron-top")!), target: self, selector:nil)
            }
            return header
        }else {
            let data = SectionHeaderModel(sectionTitle:(itemFilter.name)!.uppercased())
            if header.isCollapse == 0 {
                header.sectionComponents?.bind(data: data, state: .collapse, imageState: SImageDataType.image(UIImage(named: "icon-24-chevron-bottom")!), target: self, selector:nil)
            }else {
                header.sectionComponents?.bind(data: data, state: .collapse, imageState: ImageDataType.image(UIImage(named: "icon-24-chevron-top")!), target: self, selector:nil)
            }
            return header
        }

因为在tableView中添加了两个硬代码部分,所以必须在这些部分之后显示数组的数据。您必须像这样从数组中检索数据
dataAfterFilterSwitch[第2节]

我必须这样做。你能给我看看你的cellForRow、numberOfSections和numberOfRows代理的代码吗?否则很难判断我更新了我的问题。请重新加载。或者您可以在此处检查我的viewcontroller类:在此self.dataAfterFilterSwitch=self.dataBanDau.filter{$0.type.rawValue!=“Switch”}filterTableView.reloadData()之后添加tableView.reloadData()