2017-08-01 5 views
0

データをフィルタリングしてテーブルビューをリロードする方法を理解しようとしています。Swift 3:IDとリロードテーブルビューによる結果のフィルタリング

私は4つの地域(北、南、東、西)とすべてを持っています。

デフォルトでは、すべてのプロファイルが表示されます。

Iノースを押すと(すなわち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) 
} 
} 

フェッチ地域とVARに割り当てる:

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 DATA:(REGION_ID)

enter image description here

+0

カテゴリモデルを追加できますか? – Jaydeep

+0

どのプロファイルがどの地域に属しているかをどのように識別していますか? – Surjeet

+0

ここでコード内でregIdの値を設定していますか? –

答えて

0

1)それらは2つの異なる配列である必要があります。

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

すべてのオブジェクトを持つ第1の配列。(mainArray)

第2のアレイはメインアレイからの被ろ過物のみを有する。あなたは、すべてのデータを解析する 'StorageSubCatagories'のような一般的なクラスを使用する必要があります代わりなどStorageSubCatagoriezTwo、StorageSubCatagoriezTwoNorth、StorageSubCatagoriezTwoEast ...のような複数のクラス、およびストアを使用するすべてのオブジェクトを(filteredArray)

2)単一のアレイに以下のように:

3) この関数は、ボタンの選択に応じてあなたはフィルタリングされたデータを返します。 ボタンの場合はすべて、regionId = 0を、north RegionId = 1の場合は、値ごとに渡します。

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

以前のオブジェクトを削除した後に、この関数から返された配列のオブジェクトをfilteredArrayに追加します。

4)常にmainArrayの代わりにfilteredArrayに基づいてテーブルデータを表示します。

ご希望の場合はこちらをご覧ください。

+0

ありがとうSurjeet。私はこれを試してみる。 –

+0

ちょっと、私はあなたのお勧めのソリューションを試しましたが、明らかにまだ機能していません。 –

+0

このfunc fetchResultForSelectionから受け取ったオブジェクトの数はいくつですか? – Surjeet

関連する問題