Я бы изменил массив dataSource, чтобы он содержал как заголовки, так и авторов, создав NSDictionary с парами ключ-значение (класс Book был бы лучше).
//Do this for each book
NSDictionary * book = NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
title, @"TITLE", author, @"AUTHOR", nil];
[dataSource addObject:book];
После этого вы можете изменить метод поиска для работы с NSDictionary.
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[tableData removeAllObjects];
if(searchText != nil && ![searchText isEqualToString:@""]){
for(NSDictionary * book in dataSource){
NSString * title = [book objectForKey:@"TITLE"];
NSString * author = [book objectForKey:@"AUTHOR"];
NSRange titleRange = [[title lowercaseString] rangeOfString:[searchText lowercaseString]];
NSRange authorRange = [[author lowercaseString] rangeOfString:[searchText lowercaseString]];
if(titleRange.location != NSNotFound || authorRange.location != NSNotFound)
[tableData addObject:book];
}
}
[tableView reloadData];
}
Обратите внимание, что при использовании этого метода вы должны изменить метод cellForRowAtIndexPath, чтобы он работал с NSDictionary, а не со строками заголовка.