当我尝试传递第二个字符时,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 不应该工作
我正在尝试为文本字段提出建议。下面是我的代码
- (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 不应该工作