title: thread 1 exc_bad_instruction (code=exc_i386_invop, subcode=0x0) using search
body: <p>I'm trying to use a search function in a table view. the data changes like it supposed to but the moment I hit a cell that has been generated after the search it won't take me to the next view. It crashes on this piece of code on the selectedIndex var.</p>
  
  <pre><code>if self.tableView == self.searchDisplayController!.searchResultsTableView {
          var selectedIndex = self.tableView.indexPathForSelectedRow()!.row
          selectedTimeSlot = filteredTimeSlots[selectedIndex]
      } else {
          var selectedIndex = self.tableView.indexPathForSelectedRow()!.row
          selectedTimeSlot = timeSlots[selectedIndex]
      }
  </code></pre>
  
  <p>this is my entire code</p>
  
  <pre><code>import UIKit
  import Alamofire
  
  class ClockEditTableViewController: UITableViewController, UISearchBarDelegate, UISearchDisplayDelegate {
  
      // Contains all time slots
      var timeSlots: [TimeSlot] = [TimeSlot]()
  
      // Contains the search results
      var filteredTimeSlots: [TimeSlot] = [TimeSlot]()
  
      override func viewDidLoad() {
  
  //        timeSlots = DataHelper.getTimeSlots()
          Alamofire.request(.GET, "http://wouterhabets.com/acts.json")
              .response { (request, response, data, error) in
                  if error == nil {
                      self.timeSlots = DataHelper.getTimeSlots(data as NSData)
                      self.tableView.reloadData()
                  } else {
                      self.timeSlots = DataHelper.getTimeSlots()
                      self.tableView.reloadData()
                  }
          }
  
          super.viewDidLoad()
      }
  
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
      }
  
      override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
          var actDetailViewController: ActDetailsViewController = segue.destinationViewController as ActDetailsViewController
          var selectedTimeSlot: TimeSlot
  
          if self.tableView == self.searchDisplayController!.searchResultsTableView {
              var selectedIndex = self.tableView.indexPathForSelectedRow()!.row
              selectedTimeSlot = filteredTimeSlots[selectedIndex]
          } else {
              var selectedIndex = self.tableView.indexPathForSelectedRow()!.row
              selectedTimeSlot = timeSlots[selectedIndex]
          }
  
          actDetailViewController.timeSlot = selectedTimeSlot
      }
  
      // Return the amount of cells to display
      override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
          var count: Int
  
          // Check if the user is searching
          if tableView == self.searchDisplayController!.searchResultsTableView {
              count = filteredTimeSlots.count
          } else {
              count = timeSlots.count
          }
  
          return count
      }
  
      // Fill cells with data
      override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell {
          let cell = self.tableView.dequeueReusableCellWithIdentifier("actCell", forIndexPath: indexPath) as UITableViewCell
  
          var timeSlot: TimeSlot
  
          // Check if the user is searching
          if tableView == self.searchDisplayController!.searchResultsTableView {
              timeSlot = filteredTimeSlots[indexPath.row]
          } else {
              timeSlot = timeSlots[indexPath.row]
          }
  
          cell.textLabel?.text = timeSlot.act?.title
  
          return cell
      }
  
      func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchString searchString: String!) -&gt; Bool {
          self.filterContentForSearchText(searchString)
          return true
      }
  
      func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchScope searchOption: Int) -&gt; Bool {
          self.filterContentForSearchText(self.searchDisplayController!.searchBar.text)
          return true
      }
  
      func filterContentForSearchText(searchText: String) {
          self.filteredTimeSlots = self.timeSlots.filter({( timeSlot: TimeSlot) -&gt; Bool in
  
              // Optional scope search code
              // let categoryMatch = (scope == "All") || (band.category == scope)
              let searchText = searchText.lowercaseString
  
              let stringMatch = timeSlot.act?.title?.lowercaseString.rangeOfString(searchText)
              return (stringMatch != nil) // &amp;&amp; categoryMatch
          })
      }
  
  }
  </code></pre>
  
  <p>Does anyone have a clue what I'm doing wrong and what I should do to fix this</p>