我编写了一种在通讯簿中搜索人员的方法,并且我希望即使我将方法称为[someAdressBook searchName:@"joh"];
,该方法也能够找到“john bigs”。
我的方法适用于全名,但是我在部分名称中有问题,这是我的代码:
-(NSMutableArray *) searchName:(NSString *) someName{
NSRange range;
NSMutableArray *results = [[NSMutableArray alloc] init];
for (AddressCards *addressCard in book)
{
if (someName != nil && [someName caseInsensitiveCompare:addressCard.name] == NSOrderedSame)
[results addObject:addressCard.name];
else {
range = [addressCard.name rangeOfString:someName];
if (range.location != NSNotFound)
[results addObject:addressCard.name];
}
}
NSLog(@"%@", results);
return results;
}
请帮助我解决这个问题。
最佳答案
您可以使用-[NSString rangeOfString:options:]以不区分大小写的方式进行搜索,因此可以一步完成:
for (AddressCards *addressCard in book)
{
if ([addressCard.name rangeOfString:someName options:NSCaseInsensitiveSearch].location != NSNotFound)
{
[results addObject:addressCard.name];
}
}