我的问题场景是这样的。我有一个NSMutableArray(每个对象都是Nsstring)。我有一个用于搜索的UItextField(如客户所说)。
我想知道如何像这样搜索字符串到NSMutableArray
如果我在文本字段中键入A,那些内容来自从A开始的NSMutableArray。 如果我将AB键入TextField,那些内容来自从AB开始的NSMutableArray。 .... 我正在尝试NSRange概念我喜欢分享Mycode
〜
for (int i=0; i<[[localTotalArrayForAwailable objectForKey:@"PUNCH"] count]; i++)
{
NSString *drinkNamePuch= [[[localTotalArrayForAwailable objectForKey:@"PUNCH"] objectAtIndex:i] drinkNames];
NSRange titleResultsRange = [drinkNamePuch rangeOfString:searchText options:( NSCaseInsensitiveSearch)];
if (titleResultsRange.length>0)
{
[searchArraypuch addObject:[[localTotalArrayForAwailable objectForKey:@"PUNCH"] objectAtIndex:i]];
[copyListOfItems setValue:searchArraypuch forKey:@"PUNCH"];
}
}
〜
基于此代码搜索不能正常工作,因为我需要。
谢谢
答案 0 :(得分:1)
如果您尝试从头开始查找与searchText
匹配的所有字符串,那么您应该检查:
if ( titleresultsRange.location == 0 )
除此之外,我不确定什么是“不正常”,你需要更好地解释你的预期结果是什么,以及你的实际结果是什么。
答案 1 :(得分:1)
这样做;
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH[cd] %@", searchText];
NSArray* filteredStrings = [[localTotalArrayForAwailable objectForKey:@"PUNCH"] filteredArrayUsingPredicate:predicate];
在filteredStrings中,您获得了以searchText开头的所有字符串。
您可能会发现Predicate Programming Guide有帮助。
答案 2 :(得分:0)
您可以使用NSArray / NSMutableArray提供的这些方法:
在NSArray中,请参阅“在数组中查找对象”一节,了解以“indicesOfObjects ...”开头的过滤方法,例如: indexesOfObjectsPassingTest:
为了缩小结果范围,您可以继续将过滤连续应用于过滤后的数组或索引集。
indexesOfObjectsPassingTest:使用block:
的示例NSArray *strings = [NSArray arrayWithObjects:@"A", @"a", @"aB", @"AbC", @"Bag", @"Babc", @"baCK", @"", @"dba", nil];
NSString *searchString = @"Ab";
BOOL (^startsWithPredicate)(id, NSUInteger, BOOL*) = ^BOOL (id obj, NSUInteger idx, BOOL *stop) {
NSString *string = (NSString *) obj;
NSRange range = [string rangeOfString:searchString options:NSCaseInsensitiveSearch];
return (range.location == 0);
};
NSIndexSet *indexSet = [strings indexesOfObjectsPassingTest:startsWithPredicate];
NSLog(@"Strings found: %@", [strings objectsAtIndexes:indexSet]);
输出:
Strings found: (
aB,
AbC
)
答案 3 :(得分:0)
试试这个逻辑......它正在运作
NSMutableArray *arr = [[NSMutableArray alloc]initWithObjects:@"aa",@"bbb",@"bb",@"cc",@"dd",@"ee",@"ff",@"gg",@"hh",@"ii", nil];
NSMutableArray *arrNew = [[NSMutableArray alloc]init];
NSString *strSearch = @"cccc";
int k = strSearch.length;
for (int i=0; i<[arr count]; i++) {
for (int j=0; j<k; j++) {
if (k<=[[arr objectAtIndex:i] length]) {
if ([strSearch characterAtIndex:j] != [[arr objectAtIndex:i]characterAtIndex:j]) {
break;
}
else if(j == k-1){
[arrNew addObject:[arr objectAtIndex:i]];
}
}
}
}
NSLog(@"%@",[arrNew description]);