Most search are based on existing table data that is fetched. This involves creating another list filtered on the existing list. This is alright for small list. For bigger list in terms of thousands of items, you need to justify that memory space in maintaining two sets of list. Memory is always a premium in iPhone.
The usual fetch request when using is great for the initial list. For searchable list based on the UISearchBar, you are likely to type in the criteria string for the list. This is where predicates will be most useful. You can setup a predicate based on your search text and pass it as a parameter in your predicates before fetching the search list.
This has the advantage of having a single round trip in fetching the new list. Also, you do not need to create two lists for the usual search. That being said, now I need to put this into action.

