title: UISearchBar in Xcode 5
body: <p>I implemented the UISearchBar option in my Json data table. However, whenever I am trying to search it, the program crashes. Highly appreciate help on this. </p>
  
  <p>my table view controller's header and implementation files are given below </p>
  
  <p>Header file. </p>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  
  @interface byTitleViewController : UITableViewController
  
  @property (nonatomic, strong) NSMutableArray * jsonArray;
  @property (nonatomic, strong) NSMutableArray * songsArray;
  @property (strong, nonatomic) NSMutableArray* filteredTableData;
  
  - (void) retriveData;
  
  @property (weak, nonatomic) IBOutlet UISearchBar *searchBar;
  @property (nonatomic, assign) bool isFiltered;
  
  
  @end
  </code></pre>
  
  <p>Implementation file </p>
  
  <pre><code>#import "byTitleViewController.h"
  #import "songs.h"
  
  #define getDataURL @"http://fetchpin.com/byTitle.php"
  
  
  @interface byTitleViewController ()
  
  @end
  
  @implementation byTitleViewController
  
  @synthesize jsonArray, songsArray, filteredTableData, searchBar, isFiltered;
  
  
  - (id)initWithStyle:(UITableViewStyle)style
  {
      self = [super initWithStyle:style];
      if (self) {
          // Custom initialization
      }
      return self;
  }
  
  - (void)viewDidLoad
  {
      [super viewDidLoad];
  
      self.title = @"By Title";
  
      searchBar.delegate = (id)self;
  
      [self retriveData];
  }
  
  #pragma mark - Table view data source
  
  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  {
      return 1;
  }
  
  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  {
      NSUInteger rowCount;
  
      if(self.isFiltered)
          rowCount = filteredTableData.count;
      else
          rowCount = songsArray.count;
  
      return rowCount;
  }
  
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      static NSString *CellIdentifier = @"Cell";
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
  
      if (cell == nil) {
          cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
      }
  
      songs* songlist;
  
      if (isFiltered) {
          songlist = [filteredTableData objectAtIndex:indexPath.row];
  
      }else{
          songlist = [songsArray objectAtIndex:indexPath.row];
      }
  
      cell.textLabel.text = songlist.songTitle;
  
      return cell;
  
      // Configure the cell...
  
      /*songs * songObject;
  
      songObject = [songsArray objectAtIndex:indexPath.row];
  
      cell.textLabel.text = songObject.songTitle;
  
      cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
  
      return cell;
          */
  }
  
  
  // Override to support conditional editing of the table view.
  - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
  {
      // Return NO if you do not want the specified item to be editable.
      return YES;
  }
  
  
  - (void) retriveData{
  
      NSURL * url = [NSURL URLWithString:@"http://fetchpin.com/byTitle.php"];
      NSData * data = [NSData dataWithContentsOfURL:url];
  
      jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
  
      songsArray = [[NSMutableArray alloc] init];
  
      for (int i = 0; i &lt; jsonArray.count; i++) {
          NSString * sId = [[jsonArray objectAtIndex:i] objectForKey:@"id"];
          NSString * sTitle = [[jsonArray objectAtIndex:i] objectForKey:@"title"];
  
          [songsArray addObject:[[songs alloc]initWithSongTitle: sTitle andSongID: sId]];
  
      }
  
      //[self.tableView reloadData];
  }
  
  //search bar ...
  
  -(void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)text
  {
      if(text.length == 0)
      {
          isFiltered = FALSE;
      }
      else
      {
          isFiltered = true;
          filteredTableData = [[NSMutableArray alloc] init];
  
          for (songs * sTitle in songsArray)
          {
              NSRange titleRange = [sTitle.songTitle rangeOfString:text options:NSCaseInsensitiveSearch];
  
              if(titleRange.location != NSNotFound)
              {
                  [filteredTableData addObject:sTitle];
              }
          }
      }
  
      [self.tableView reloadData];
  }
  
  @end
  </code></pre>