将文本字段的值与目标c中的数组内容进行匹配

时间:2013-02-13 11:02:26

标签: ios objective-c nsarray nspredicate

我有一些数组,其内容是从db中选取的。我希望将我在'searchTextField'中输入的文本与从DB中获取的数组内容相匹配。

例如:我的数组包含myArray={'bat man','bat and ball','ball'}; 如果我在'searchTextField'中输入'bat';它必须显示数组中匹配文本的索引(在本例中为索引0和1)。

我怎样才能实现这个目标.. 等待你的帮助..

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;
}