我有一些数组,其内容是从db中选取的。我希望将我在'searchTextField'中输入的文本与从DB中获取的数组内容相匹配。
例如:我的数组包含myArray={'bat man','bat and ball','ball'};
如果我在'searchTextField'中输入'bat';它必须显示数组中匹配文本的索引(在本例中为索引0和1)。
我怎样才能实现这个目标.. 等待你的帮助..
答案 0 :(得分:4)
NSMutableArray *tempArray = [NSMutableArray arrayWithObjects:@"bat man",@"bat and ball",@"ball", nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] 'bat'"];
NSArray *result = [tempArray filteredArrayUsingPredicate:predicate];
result
数组将包含已过滤的对象,从那里您可以获得索引:
[tempArray indexOfObject:/ 结果数组中的对象,逐个 /]
contains[c]
表示搜索不区分大小写。有关谓词的更多信息:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pUsing.html
修改强>
将textField的委托设置为self。在此之前转到YourFile.h,添加UITextFieldDelegate
。现在在textFieldShouldReturn
执行此操作:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
NSMutableArray *tempArray = [NSMutableArray arrayWithObjects:@"bat man",@"bat and ball",@"ball", nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",textField.text];
NSArray *result = [tempArray filteredArrayUsingPredicate:predicate];
return YES;
}