2017-08-01 84 views
0

我想弄清楚如何筛选数据并重新加载tableview。Swift 3:使用ID和重新加载tableview筛选结果

我有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! 

    } 
} 

请看截图:

When Displaying all

When Displaying South Region

而且,在第二截图(南区)看到的轮廓是为了隐藏,因为它属于北地区。

请让我知道我该如何解决这个问题。

感谢您的时间:)

型号:

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)

enter image description here

+0

你可以添加你的类别模型吗? – Jaydeep

+0

如何识别哪个配置文件属于哪个区域? – Surjeet

+0

代码中的哪个位置可以设置regId的值? –

回答

0

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 
    } 

删除先前的对象后,将从此函数返回的数组对象添加到filteredArray中。

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

希望这对你有所帮助。

+0

谢谢Surjeet。我会试试这个。让我们看看 –

+0

嘿,我试过了你推荐的解决方案,但显然它还没有工作。 –

+0

你从这个func fetchResultForSelection收到了多少个对象? – Surjeet