当我尝试传递第二个字符时,BEGINWITH 谓词不起作用

BEGINWITH predicate not working when i try to pass second character

我正在尝试为文本字段提出建议。下面是我的代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSLog(@"String output: %@", string);
    NSString *stringToSearch = string;

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@",stringToSearch]; // if you need case sensitive search avoid '[c]' in the predicate

    // NSLog(@"Predicate has some ?: %i", [predicate ])
    selectedOne = [colorAutocompleteArray filteredArrayUsingPredicate:predicate];


    NSLog(@"count of selected: %lu",(unsigned long)[selectedOne count]);

    NSLog(@"Select Array: %@", selectedOne);

    NSLog(@"Text entered: %@", textField.text);

    tableView.hidden = NO;
    [tableView reloadData];


    return true;

}

当我输入第一个字母表时,它工作正常,但当我输入第二个字母表时,它 returns 什么都没有。然而,我尝试使用 'contains' 关键字的谓词它工作正常但建议列表太大,因为它检查包含任何字母的数组的每个条目。所以我想要 hasPrefix 方法之类的东西,所以我尝试了这个,但它从来没有 returns 超过一个条目的任何东西。您的每一个评论将不胜感激。

谢谢。

这个方法有问题returns一次输入一个字符,而不是你输入的所有字符。

NSLog(@"String output: %@", string);
NSString *stringToSearch = string;

检查这个并获取整个 textField 字符串。

希望对您有所帮助。

试试这个

NSString *stringToSearch = [textField.text stringByAppendingString:string];

因为“string”returns只有你输入的最后一个字符,所以between 不应该工作