1

iPhone アプリで検索画面 (名前のリストを検索する) を実行しています。ここでは、姓と名の両方で検索する必要があります。

検索テーブルビューに次のような名前が含まれているとします

Ravi Kiran 
sujay huilgol
harry potter 

私の検索は名前のみで機能します。つまり、Raを検索するとRavi Kiranが表示されますが、 Kiranを検索するとRavi Kiran が表示されません。

filterContentForSearchTextはこのようなものです:

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
    [self.arrSearhResults removeAllObjects]; // First clear the filtered array.
    
    // Search the main list for Usernames whose type matches searchText; add items that match to the filtered array.
    
    for(NSString * strUserName in arrUserInfo )
    {
        NSComparisonResult result = [strUserName compare:searchText options:(NSLiteralSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
        if (result == NSOrderedSame)
        {
            // Update the filtered array based on the search text and scope.
            [self.arrSearhResults addObject:strUserName];
            //NSLog(@"arrSearhResults %@",arrSearhResults);
        }
    }
    
}

これを解決するにはどうすればよいですか?

4

3 に答える 3

1

rangeOfStringを使用して文字列全体を検索する

 for(NSString * strUserName in arrUserInfo )
{
  NSRange range = [strUserName rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
  if (range.length > 0)
  {
    [self.arrSearhResults addObject:strUserName];
  }
}
于 2012-09-28T06:16:48.990 に答える
1

これを試して:

for(NSString * strUserName in arrUserInfo )
{
  NSRange titleResultsRange = [[NSString stringWithFormat:@"%@",strUserName] rangeOfString:searchText options:NSCaseInsensitiveSearch];
    if (titleResultsRange.length){
        [self.arrSearhResults addObject:[self.contacts objectAtIndex:i]];
    }
}
于 2012-09-28T06:16:03.137 に答える
0
NSArray *array = [[NSArray alloc] initWithObjects:@"Ravi Kiran", @"sujay huilgol", nil];
for (NSString* name in array)
{
    if ([name rangeOfString:@"Kiran"].location != NSNotFound)
        NSLog(@"%@", name);
}
于 2012-09-28T06:14:29.613 に答える