2016-02-23 6 views
-1

привет Я пытаюсь реализовать SearchBar в Моем приложении. Я следил за некоторыми учебниками и успешно реализовал SearchBar. Но проблема в том, что в моем рабочем коде данные жестко запрограммированы и находятся в NSArray, и в моем фактическом приложении данные находятся в NSDictionary, исходящих из веб-службы. Вот рабочий код. Я хочу осуществить это с помощью NSDictionarySearchBar В TableView

class CountryTableViewController: UITableViewController, UISearchResultsUpdating { 

    var filterTableData = [String]() 
    var resultSearchController = UISearchController() 

    var tableData = ["one","two","three"] 



    override func viewDidLoad() { 
     super.viewDidLoad() 



     self.resultSearchController = ({ 

      let controller = UISearchController(searchResultsController: nil) 
      controller.searchResultsUpdater = self 
      controller.dimsBackgroundDuringPresentation = false 
      controller.searchBar.sizeToFit() 
      self.tableView.tableHeaderView = controller.searchBar 
      return controller 


     })() 

     self.tableView.reloadData() 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 


     if(self.resultSearchController.active){ 

      return self.filterTableData.count 
     }else { 
      return tableData.count 
     } 



    } 



    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CountryTableViewCell 

     if(self.resultSearchController.active){ 


      cell.countryNameLabel.text = filterTableData[indexPath.row] 
      return cell 

     }else{ 

      cell.countryNameLabel.text = tableData[indexPath.row] 
      return cell 
     } 


    } 

    func updateSearchResultsForSearchController(searchController: UISearchController) { 
     filterTableData.removeAll(keepCapacity: false) 

     let searchPredict = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!) 

     let array = (tableData as NSArray).filteredArrayUsingPredicate(searchPredict) 
     filterTableData = array as! [String] 
     self.tableView.reloadData() 
    } 
    } 

Мои NSDictionary Данные как этот

{ 

    0 =  { 

     City =   { 

      code = 11859; 

      "country_id" = 177; 

      "created_at" = "<null>"; 

      id = 23219; 

      name = Lahore; 



     }; 

     Country =   { 

      id = 177; 

      name = "Pakistan 

\n"; 

     }; 

     State =   { 

      Country =    (

      ); 

      id = 3262; 

      name = "Punjab 

"; 

     }; 

    }; 

    code = 200; 

} 

Я попытался с помощью NSDictionary, но так и не удалось

+0

В поиске, в котором тег заселен, это имя? –

+0

@ ReshmiMajumder да город и название страны .. это ответ на ваш вопрос? – hellosheikh

ответ

0

Вы можете использовать этот

NSDictionary *dictn = [main_dictn objectForKey:@"0"]; 
NSString *str = [NSString stringWithFormat:@"%@ , %@",[[dictn objectForKey:@"City"] objectForKey:@"name"],[[dictn objectForKey:@"Country"] objectForKey:@"name"]]; 

In Swift

let dictn : NSDictionary = main_dictn.objectForKey("0") as! NSDictionary 

let Cityname = dictn["City"]?.objectForKey("name") as! String /// get city name 
let Countryname = dictn["Country"]?.objectForKey("name") as! String /// get country name 

let str : String = String(format: "%@ , %@",Cityname,Countryname) 
+0

где? хорошо Если вам удобно в объективе c, вы можете отредактировать мой код и использовать nsdictionary. Я новичок, поэтому я не могу заставить его работать, используя этот код – hellosheikh

+0

, пожалуйста, проверьте свой отредактированный вопрос. Я внесла изменения в ваш код. –

+0

@hellosheikh. Пожалуйста, проверьте мой отредактированный ответ. –

Смежные вопросы