2016-11-06 16 views
1

Objective-CのXcodeでアプリを開発しています。アプリにはレストランがあるTableViewがあります。私の問題は、検索バーを使用するときにフィルタで大文字と小文字が区別され、大文字と小文字を区別しない検索を行いたいということです。 私はsearchBar textDidChangeメソッドを変更しなければならないことを知っています。私は助けを求めていますが、私の場合はどのように変更するのか分かりません。誰か助けてくれますか?どうもありがとうございました。大文字と小文字を区別しないSearchBar Xcode

-(void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 

    if (searchText.length == 0) { 
     //Set our boolean flag 
     isFiltered = NO; 
    } else { 
     //Set our boolean flag 
     isFiltered = YES; 
    } 
    //Alloc and init our filteredData 
    filteredRest = [[NSMutableArray alloc] init]; 

    for (Restaurant *item in originData) { 
     if ([item.title containsString:searchText]) { 
      [filteredRest addObject:item]; 
     } 
    } 

    //Reload our table view 
    [self.tableView reloadData]; 
} 

ありがとう:

これは私のsearchBar textDidChange方法です。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 

    if (searchText.length == 0) { 
     //Set our boolean flag 
     isFiltered = NO; 
    } else { 
     //Set our boolean flag 
     isFiltered = YES; 
    } 
    //Alloc and init our filteredData 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title CONTAINS[cd] %@", searchText]; 
    filteredRest = [originData filteredArrayUsingPredicate:predicate] 

    //Reload our table view 
    [self.tableView reloadData]; 
} 
+2

可能性のある重複した[小文字を区別しないUISearch棒ケースは?](http://stackoverflow.com/questions/2458636/uisearch-bar-case-insensitive) –

答えて

4

変更この

if ([[item.title lowercaseString]containsString:[searchText lowercaseString]]) { 
    [filteredRest addObject:item]; 
} 
+1

これは私のために素晴らしい作品。ありがとうございました! –

+0

ハッピーコーディング(y) – Rajat

1

これで、このライン

if ([item.title containsString:searchText]) { 
    [filteredRest addObject:item]; 
} 

は、コードを更新する方法です。

if (!([item.title rangeOfString:searchText options:NSCaseInsensitiveSearch].location == NSNotFound)) 
    { 
     [filteredRest addObject:item]; 
    } 
0

つ以上の最善の解決策:

関連する問題