2017-12-21 11 views
0

前の質問の続きとしてTrying to compare Any? with String テキストフィールド入力の検索条件を満たすJSONレスポンスオブジェクトでtableviewをリロードするために実装する必要があるのは何ですか?リロードのためのJSON応答の検索tableView

これは現在の関数である:あなたのディレクトリに検索するための

public func cargarDatos_filtrados(){ 
     //fetching data from web api 
     Alamofire.request(URL_GET_DATA).responseJSON { response in 
      self.directorios.removeAll() 

      //getting json 
      if let json = response.result.value as? [[String:String]] { 
       print (json) 

       //traversing through all elements of the array 
       for dict in json { 
        let nom = dict["nombre"] 

        if (nom == self.texto_buscado.text){ 
         //DO SOMETHING 
        } 


        self.directorios.append(DirectorioCompleto(
         nombre: dict["nombre"], 
         apellidos: dict["apellidos"], 
         apodo: dict["apodo"], 
         cumple: dict["cumple"], 
         conyuge: dict["conyuge"], 
         cumple_conyuge: dict["cumple_conyuge"], 
         aniversario_bodas: dict["aniversario_bodas"], 
         empresa: dict["empresa"], 
         direccion_empresa: dict["direccion_empresa"], 
         tel_negocio: dict["tel_negocio"], 
         fecha_ingreso: dict["fecha_ingreso"], 
         num_rotario: dict["num_rotario"], 
         padrino: dict["padrino"], 
         direccion_casa: dict["direccion_casa"], 
         tel_casa: dict["tel_casa"], 
         celular: dict["celular"], 
         email: dict["email"], 
         email_privado: dict["email_privado"], 
         clasificacion: dict["clasificacion"], 
         imagen: dict["imagen"] 
        )) 

       } 
      } 

      //displaying data in tableview 
      self.tableView.reloadData() 
     } 
    } 
+0

あなたはあなたのテーブルビューを供給するためにself.directoriosを使用していると思います。 2つのクエスチョン - ローカルで結果をフィルタリングしていますか?または検索文字列をREST APIに送信しますか?前者の場合は、マスターデータ配列を維持し、検索テキストごとに実際にフィルタリングされたデータを保持する別の配列を持つ必要があります。後者の場合は、とにかくサーバーから正しい結果を得て、サーバーから得た結果の配列からテーブルをロードします。 – Shripada

+0

あなたのDirectorioCompletoは複雑すぎるため、非常に多くの議論が必要です。辞書を渡して、DirectorioCompleto内のすべての抽出を隠すことができます。 – Shripada

+0

DirectorioCompletoアレイの2つのインスタンス(元のインスタンスとフィルタリングされたインスタンス)を1つずつ保持し、フィルタリングされたアレイに.filterを単に使用します。 – koropok

答えて

1

、これを実装します。私はあなたがキー​​とその文字列で検索しなければならないと仮定しています。

このコードをどこに置いて検索しますか?

if let text = self.texto_buscado.text 
      { 
       let filteredArray = self.directorios.filter{$0.nombre.localizedCaseInsensitiveContains(text) || $0.apellidos.localizedCaseInsensitiveContains(text)} 

または正確な検索結果のためとして

   let filteredArray = self.directorios.filter{$0.nombre == text || $0.apellidos == text} 
      } 

filteredArrayを照合し、私は、これはあなたを助けることを願っていますあなたのtableView

self.tableView.reloadData() 

をリロードするために、この配列を使用するため。

+0

ありがとうございました。複数のキーに対して検索を実行するにはどうすればよいですか?すべてのオブジェクトは文字列です – mvasco

+0

完了しました。チェックしてください。 –

+0

ありがとう、私はあなたの提案を試みる – mvasco

関連する問題