Everything else looks good, but this particular method should not be called manually like this.

https://developer.apple.com/library/ios/documentation/uikit/reference/UISearchDisplayDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UISearchDisplayDelegate/searchDisplayController:shouldReloadTableForSearchString:

> If you don’t implement this method, then the results table is reloaded as soon as the search string changes.
>
> You might implement this method if you want to perform an asynchronous search. You would initiate the search in this method, then return NO. You would reload the table when you have results.

Is there a reason you're triggering this method?