0

我正在尝试在应用程序中实现自动完成方法。当我键入类型字符时,它会返回与第一个字符匹配的单词。例如,如果我输入“B”或“ba”,它会返回以“ba”开头的字符串,如“Ballon”和“Ball”。但是在我的数组中,有多个单词的字符串由“(”或“空格”分隔。例如“白球”或“巨人(大)”。我也需要获取这些字符串。任何帮助将不胜感激。

这是我正在使用的代码,

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    autocompleteTableView.hidden = NO;

    NSString *substring = [NSString stringWithString:textField.text];
    substring = [substring stringByReplacingCharactersInRange:range withString:string];
    [self searchAutocompleteEntriesWithSubstring:substring];
    return YES;
}

- (void)searchAutocompleteEntriesWithSubstring:(NSString *)substring {

    [autocompleteList removeAllObjects];
    for(NSString *curString in contentArray)
    {
        NSRange substringRange = [curString rangeOfString:substring options:NSCaseInsensitiveSearch];

        if (substringRange.location == 0)
        {
            [autocompleteList addObject:curString];
        }
    }
    [autocompleteTableView reloadData];
}

谢谢

4

1 回答 1

0

问题在于你的 if 条件

    if (substringRange.location == 0)
    {
        [autocompleteList addObject:curString];
    }

由于您正在检查位置 0,因此只会返回以子字符串开头的字符串。如下更改条件应该可以帮助您解决问题。

   if (substringRange.location != NSNotfound)
   {
       [autocompleteList addObject:curString];
   }
于 2012-08-02T06:39:20.193 回答