【问题标题】:Swift 3: Filtering results with ID's and reload tableviewSwift 3:使用 ID 过滤结果并重新加载 tableview
【发布时间】:2017-08-01 14:16:48
【问题描述】:

我正在试图弄清楚如何过滤数据并重新加载表格视图。

我有 4 个区域(北部、南部、东部和西部)等等。

默认情况下,它将显示所有配置文件。

如果我按北方(即 1),它应该只过滤北方地区可用的配置文件

类似地,有南、东和西。根据按下的区域,它应该过滤配置文件。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if indexPath.section == 0
    {
        let cell = self.bussinessTableView.dequeueReusableCell(withIdentifier: "bussinessCell", for: indexPath) as! BussinessCell

        let tableObjects:StorageSubCatagoriezTwo = subCatagorizeDataTwo[indexPath.row]

        let charCheck = (tableObjects.address).replacingOccurrences(of: " ", with: "")
        cell.bussinessWebView.scrollView.isScrollEnabled = false

        var strings = ""

        if regId == 1
        {
            cell.bussinessName.text = " "
            let tableObjects:StorageSubCatagoriezTwoNorth = subCatagorizeDataTwoN[indexPath.row]

            if tableObjects.address.characters.isEmpty != true
            {
                 strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
            }
            else
            {
                //nothing
            }
            if tableObjects.telephone.characters.isEmpty != true
            {
                strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")
            }
            else
            {

            }
            if tableObjects.email.characters.isEmpty != true
            {
                strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://localbluepages.com.au/images/icons/email.gif\"> "+tableObjects.email+"<br>" : "")
            }
            else
            {

            }
            if tableObjects.website.characters.isEmpty != true{
                 strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")
            }
            else{

            }
        }
        else if regId == 2
        {
            cell.bussinessName.text = " "
            let tableObjects:StorageSubCatagoriezTwoEast = subCatagorizeDataTwoE[indexPath.row]
            //cell.bussinessName.text = tableObjects.nameString
            if tableObjects.address.characters.isEmpty != true
            {
              //  cell.bussinessName.text = tableObjects.nameString
                strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
            }
            else
            {
                //nothing
            }
            if tableObjects.telephone.characters.isEmpty != true
            {
                strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")
            }
            else
            {

            }
            if tableObjects.email.characters.isEmpty != true
            {
                strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://localbluepages.com.au/images/icons/email.gif\"> "+tableObjects.email+"<br>" : "")
            }
            else
            {

            }
            if tableObjects.website.characters.isEmpty != true{
                strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")
            }
            else{

            }
        }
        else if regId == 3
        {
            cell.bussinessName.text = " "
            let tableObjects:StorageSubCatagoriezTwoSouth = subCatagorizeDataTwoS[indexPath.row]
           // cell.bussinessName.text = tableObjects.nameString
            if tableObjects.address.characters.isEmpty != true
            {
                //cell.bussinessName.text = tableObjects.nameString
                strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
            }
            else
            {
                //nothing
            }
            if tableObjects.telephone.characters.isEmpty != true
            {
                strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")
            }
            else
            {

            }
            if tableObjects.email.characters.isEmpty != true
            {
                strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://localbluepages.com.au/images/icons/email.gif\"> "+tableObjects.email+"<br>" : "")
            }
            else
            {

            }
            if tableObjects.website.characters.isEmpty != true{
                strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")
            }
            else{

            }
        }
        else if regId == 4
        {
            cell.bussinessName.text = " "
            let tableObjects:StorageSubCatagoriezTwoWest = subCatagorizeDataTwoW[indexPath.row]
        //    cell.bussinessName.text = tableObjects.nameString
            if tableObjects.address.characters.isEmpty != true
            {
              //  cell.bussinessName.text = tableObjects.nameString
                strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
            }
            else
            {
                //nothing
            }
            if tableObjects.telephone.characters.isEmpty != true
            {
                strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")
            }
            else
            {

            }
            if tableObjects.email.characters.isEmpty != true
            {
                strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://localbluepages.com.au/images/icons/email.gif\"> "+tableObjects.email+"<br>" : "")
            }
            else
            {

            }
            if tableObjects.website.characters.isEmpty != true{
                strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")
            }

        }
        else{
            let tableObjects:StorageSubCatagoriezTwo = subCatagorizeDataTwo[indexPath.row]
            cell.bussinessName.text = tableObjects.nameString

            let charCheck = (tableObjects.address).replacingOccurrences(of: " ", with: "")
            print(charCheck)
            cell.bussinessName.text = " "

            var strings = ""

            strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
            strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.address+"</b></font><br>" : "")
            // strings = strings+(tableObjects.address.characters.count > 0 ? "<img src=\"http://getmydetails.pe.hu/img/yt.jpg\"> "+tableObjects.address+"<br>" : "")

            strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")

            strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://getmydetails.pe.hu/img/email.gif\"> "+tableObjects.email+"<br>" : "")

            strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;'  src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")

            // cell.bussinessWebView.loadHTMLString("<font size=\"5\"><b>"+tableObjects.nameString+"</b></font><br><img src=\"http://getmydetails.pe.hu/img/yt.jpg\"> "+tableObjects.address+"<br><img src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br><img src=\"http://getmydetails.pe.hu/img/email.gif\"> "+tableObjects.email+"<br><img src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website, baseURL: nil)

            cell.bussinessWebView.loadHTMLString(strings, baseURL: nil)
            let heightIndex = strings.components(separatedBy: "<br>")
            let heightMul = heightIndex.count
            print(heightMul*32)

            self.heightOfTheCell = CGFloat(((heightMul)*32)+4)


        }
        return cell
    }
    else if indexPath.section == 1
    {
        let cell = self.bussinessTableView.dequeueReusableCell(withIdentifier: "bussinessCell2")
        cell?.textLabel?.textAlignment = .center
        switch regId
        {
        case 0:
            if subCatagorizeDataTwo.count != forAll
            {
                cell?.textLabel?.text = "LOAD MORE DATA"
                cell?.textLabel?.textColor = Color.whiteColor
                cell?.backgroundColor = UIColor.darkGray

            }else{
                cell?.textLabel?.text = "NO MORE FOUND!"
                cell?.textLabel?.textColor = UIColor.darkGray
                cell?.backgroundColor = UIColor.gray
                cell?.selectionStyle = UITableViewCellSelectionStyle.none
            }
        case 1:
            if subCatagorizeDataTwoN.count != forN
            {
                cell?.textLabel?.text = "LOAD MORE DATA"
                cell?.textLabel?.textColor = Color.whiteColor
                cell?.backgroundColor = UIColor.darkGray

            }else{
                cell?.textLabel?.text = "NO MORE FOUND!"
                cell?.textLabel?.textColor = UIColor.darkGray
                cell?.backgroundColor = UIColor.gray
                cell?.selectionStyle = UITableViewCellSelectionStyle.none
            }
        case 2:
            if subCatagorizeDataTwoE.count != forE
            {
                cell?.textLabel?.text = "LOAD MORE DATA"
                cell?.textLabel?.textColor = Color.whiteColor
                cell?.backgroundColor = UIColor.darkGray

            }else{
                cell?.textLabel?.text = "NO MORE FOUND!"
                cell?.textLabel?.textColor = UIColor.darkGray
                cell?.backgroundColor = UIColor.gray
                cell?.selectionStyle = UITableViewCellSelectionStyle.none
            }
        case 3:
            if subCatagorizeDataTwoS.count != forS
            {
                cell?.textLabel?.text = "LOAD MORE DATA"
                cell?.textLabel?.textColor = Color.whiteColor
                cell?.backgroundColor = UIColor.darkGray

            }else{
                cell?.textLabel?.text = "NO MORE FOUND!"
                cell?.textLabel?.textColor = UIColor.darkGray
                cell?.backgroundColor = UIColor.gray
                cell?.selectionStyle = UITableViewCellSelectionStyle.none
            }
        case 4:
            if subCatagorizeDataTwoW.count != forW
            {
                cell?.textLabel?.text = "LOAD MORE DATA"
                cell?.textLabel?.textColor = Color.whiteColor
                cell?.backgroundColor = UIColor.darkGray

            }else{
                cell?.textLabel?.text = "NO MORE FOUND!"
                cell?.textLabel?.textColor = UIColor.darkGray
                cell?.backgroundColor = UIColor.gray
                cell?.selectionStyle = UITableViewCellSelectionStyle.none
            }

        default:break
        }

        return cell!
    }
    else
    {
        let tableObjects:StorageSubCatagoriez3rd = SubCatagoriez3rd[indexPath.row]
        let cell = self.bussinessTableView.dequeueReusableCell(withIdentifier: "bussinessCell3")
        cell?.textLabel?.text = tableObjects.nameString
        return cell!

    }
}

请看截图:

而且,如第二张屏幕截图(南部地区)所示,该配置文件本应被隐藏,因为它属于北部地区。

请告诉我如何解决这个问题。

感谢您的时间:)

型号:

class StorageSubCatagoriezTwo
{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String

init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
{
    self.nameString = tempName.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.idString  = tempID.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.address = tempaddress.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.telephone = tempTelephone.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.email = tempEmail.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.website = tempWebsite.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
}
}

    class StorageSubCatagoriezTwoNorth

{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String

init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
    {
    self.nameString = tempName.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.idString  = tempID.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.address = tempaddress.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.telephone = tempTelephone.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.email = tempEmail.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.website = tempWebsite.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
}
}

class StorageSubCatagoriezTwoEast
{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String

init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
{
    self.nameString = tempName.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.idString  = tempID.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.address = tempaddress.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.telephone = tempTelephone.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.email = tempEmail.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.website = tempWebsite.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
}
}

class StorageSubCatagoriezTwoWest
{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String

init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
{
    self.nameString = tempName.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.idString  = tempID.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.address = tempaddress.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.telephone = tempTelephone.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.email = tempEmail.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.website = tempWebsite.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)    }
}

class StorageSubCatagoriezTwoSouth
{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String

init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
{
    self.nameString = tempName.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.idString  = tempID.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.address = tempaddress.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.telephone = tempTelephone.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.email = tempEmail.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
    self.website = tempWebsite.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines)
}
}

获取区域并分配给变量:

let id = String(describing: dictionary["id"]!)
                        let name = String(describing: dictionary["BUSINESS_NAME"]!)
                        let email = String(describing: dictionary["EMAIL"]!)
                        var streetNo = String(describing: dictionary["STREET_NO"]!)
                        var streetName = String(describing: dictionary["STREET_NAME"]!)
                        var suburbID = String(describing: dictionary["SUBURB_ID"]!)
                        var postCode = String(describing: dictionary["POSTCODE"]!)
                        let regionID = String(describing: dictionary["REGION_ID"]!)
                        var landline = String(describing: dictionary["PHONE_FIXED"]!)
                        var mobile = String(describing: dictionary["PHONE_MOBILE"]!)
                        let website = String(describing: dictionary["WEBURL"]!)
                        var suburbName = String(describing: dictionary["Suburb"]!)
                        let streedNoHide = String(describing: dictionary["STREET_NO_HIDDEN"]!)
                        let streetNameHide = String(describing: dictionary["STREET_NAME_HIDDEN"]!)
                        let suburbHide = String(describing: dictionary["SUBURB_HIDDEN"]!)
                        let postCodeHide = String(describing: dictionary["POSTCODE_HIDDEN"]!)
                        let mobileHide = String(describing: dictionary["PHONE_MOBILE_HIDDEN"]!)
                        let landlineHide = String(describing: dictionary["PHONE_FIXED_HIDDEN"]!)

JSON 数据:(REGION_ID)

【问题讨论】:

  • 你能添加你的类别模型吗?
  • 你如何识别哪个配置文件属于哪个区域?
  • 您在代码中的哪个位置设置 regId 的值?
  • 从外部数据库读取区域ID
  • @Jaydeep,请查看代码。我已经更新了!!

标签: ios swift3


【解决方案1】:

1) 它们应该是 2 个不同的数组。

var mainArray = [StorageSubCatagories]()
var filteredArray = [StorageSubCatagories]()

第一个包含所有对象的数组。 (mainArray)

第二个数组只包含来自主数组的过滤对象。 (filteredArray)

2) 您应该使用像“StorageSubCatagories”这样的通用类来解析所有数据而不是使用多个类,比如 StorageSubCatagoriezTwo、StorageSubCatagoriezTwoNorth、StorageSubCatagoriezTwoEast ...等等,并将所有对象存储到一个数组中,如下所示:

3) 此功能将根据按钮选择返回过滤数据。 对于按钮全部通过 regionId = 0,对于北 regionId = 1,.... 根据您的值。

 func fetchResultForSelection(_ regionId: Int) -> [StorageSubCatagories] {
       if regionId == 0 {
           return mainArray
       } 
       let tempArray = mainArray.filter { $0.regId == regionId }
       return tempArray
    } 

在删除之前的对象后,将此函数返回的数组对象添加到过滤数组中。

4) 始终基于filteredArray而不是mainArray显示您的表格数据。

希望对您有所帮助。

【讨论】:

  • 谢谢苏吉特。我会试试这个。让我们看看
  • 嘿,我试过你推荐的解决方案,但显然还是不行。
  • 你从这个函数 fetchResultForSelection 收到了多少个对象?
  • 我没有这个功能
  • 可以吗,我可以通过电子邮件将文件发送给您吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多