как искать данные таблицы - PullRequest
0 голосов
/ 27 февраля 2019

Мое требование: у меня будет список деталей чата в табличном представлении. В верхней части табличного представления будет функция поиска с использованием текстового поля. На основе уникального идентификатора пользователя поиск должен быть выполнен.это не чат с уникальным идентификатором, который вводил пользователь, то он должен перенаправить на другой экран, который называется chatcreatepage.когда бы мы ни искали чат, мы будем использовать API, который называется FIND API, и в этом API FIND есть словарь чата, если он пуст, тогда вызывается create chat. Если этот словарь чата не ноль, то нужно отобразитьэти детали чата в виде таблицы чата.Когда страница списка чата загружается, мы будем звонить в список чата Api. Когда мы ищем чат, введя уникальный идентификатор в текстовое поле, мы получим соответствующие детали введенного уникального идентификатора и данные уникального идентификатора, которые у нас есть.чтобы показать в табличном представлении.

Это задача, и я выполнил ее до тех пор, пока список чатов не отображается в таблице. Я действительно не знаю об этом результате поиска, отображающемся после вызова API НАЙТИ. Если кто-нибудь мне поможетЧтобы решить ее, было бы действительно здорово. Заранее спасибо. Я предоставляю код ниже.

     import UIKit
        import Alamofire
        import SwiftyJSON
        import SDWebImage
        class ChatlistViewController: UIViewController{
             var pro = [[String:Any]]()
             var dict:[String:Any]!
             var idd = ""
             var id = ""
            var chatt:Dictionary = [String:Any]()
            var searchActive : Bool = false
            var filtered:[String] = []
            var data:[String] = []

            @IBOutlet weak var search-text: UITextField!
            @IBOutlet weak var chatlisttable: UITableView!
            override func viewDidLoad() {
                super.viewDidLoad()

                       apical()

            }



            func apical(){

                let acce:String = UserDefaults.standard.string(forKey: "access-tokenn")!
                        print(acce)

                        let headers:HTTPHeaders = ["Authorization":"Bearer \(acce)","Content-Type":"application/X-Access-Token"]

                Alamofire.request(Constants.Chatlist, method: .get, encoding: URLEncoding.default, headers: headers).responseJSON {  response in
                    switch response.result {
                    case .success:
                        print(response)
                        if response.result.value != nil{
                            var maindictionary = NSDictionary()
                            maindictionary = response.result.value as! NSDictionary
                            print(maindictionary)

                            var userdata = NSDictionary()
                            userdata = maindictionary.value(forKey: "data") as! NSDictionary

                            var productsdetails = [[String:Any]]()
                            productsdetails = userdata.value(forKey: "chat") as! [[String:Any]]
                            self.pro = productsdetails
                                 print(self.pro)
                                   self.chatlisttable.reloadData()

                        }else{
                            let Alertcontroller = UIAlertController(title: "Alert", message: "No data found ", preferredStyle: .alert)
                            let CancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
                            Alertcontroller.addAction(CancelAction)
                            self.present(Alertcontroller, animated: true, completion: nil)
                        }
                                break
                            case .failure(let error):

                                print(error)
                            }
                        }


            }

            func searchapicall(){
                idd = searchtext.text!
               let acce:String = UserDefaults.standard.string(forKey: "access-tokenn")!
                print(acce)

                let headers:HTTPHeaders = ["Authorization":"Bearer \(acce)","Content-Type":"application/X-Access-Token"]
                print((Constants.Chatlistsearch)+(idd))
                Alamofire.request((Constants.Chatlistsearch+idd), method: .get, encoding: URLEncoding.default, headers: headers).responseJSON {  response in
                    switch response.result {
                    case .success:
                        //print(response)
                        if response.result.value != nil{
                            var maindictionary = NSDictionary()
                            maindictionary = response.result.value as! NSDictionary

                            var chat:Dictionary = maindictionary.value(forKey: "data") as! [String:Any]

                            var chattt:Dictionary = chat["chat"] as! [String:Any]

                            if (chattt != nil) {

                                print("Find Action")

                                self.chatt = chat["user"] as! [String:Any]
                                print(self.chatt)
                                //var uniqued:String = self.chatt["unique_id"] as! String

                            }else{
                                let viewc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "ChatViewController") as? ChatViewController
                                self.navigationController?.pushViewController(viewc!, animated: true)
                            }

                        }else{
                            let Alertcontroller = UIAlertController(title: "Alert", message: "No data found on this unique id", preferredStyle: .alert)
                            let CancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
                            Alertcontroller.addAction(CancelAction)
                            self.present(Alertcontroller, animated: true, completion: nil)
                        }
                        break
                    case .failure(let error):

                        print(error)
                    }
                }

            }




        }


        extension ChatlistViewController: UITextFieldDelegate{

            func textFieldShouldReturn(_ textField: UITextField) -> Bool {

                self.searchapicall()

                return true
            }

        }

        extension ChatlistViewController: UITableViewDataSource,UITableViewDelegate {

            func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                if (searchActive == false){
                return self.pro.count
                }else{
                    return 1
                }
            }

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

                var cell = chatlisttable.dequeueReusableCell(withIdentifier: "ChatlistTableViewCell", for: indexPath) as! ChatlistTableViewCell

                if (searchActive == false){

                dict = pro[indexPath.row]
                var recepient = dict["recipient"] as! [String:Any]
                print(recepient)

                var name = recepient["name"] as! String
                print(name)
                id = recepient["unique_id"] as! String
                print(id)
                var image = recepient["avatar"] as! String
                print(image)
                cell.namelbl.text = name
                cell.idlbl.text = id
                cell.imageView!.sd_setImage(with: URL(string:image), placeholderImage: UIImage(named: "Mahi.png"))

                }else{

                    cell.namelbl.text = chatt["name"] as! String
                    cell.idlbl.text = chatt["unique_id"] as! String
                }

                return cell
               self.chatlisttable.reloadData()

            }

        }

//Response format

{
    "success": 1,
    "status": 200,
    "data": {
        "user": {
            "id": 3,
            "unique_id": "10002",
            "name": "nani",
            "avatar": "https://www.planetzoom.co.in/storage/user/avatar/AkgcUFF3QIejMhZuLF4OXnSFHjxNAOo4FuXV3Mgi.jpeg"
        },
        "chat": null
    }
}

1 Ответ

0 голосов
/ 08 марта 2019

Вы должны использовать UISearchBar и вызывать API в методе делегата панели поиска func searchBar (_ searchBar: UISearchBar, textDidChange searchText: String).Для справки используйте этот https://guides.codepath.com/ios/Search-Bar-Guide

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...