我编写了一种在通讯簿中搜索人员的方法,并且我希望即使我将方法称为[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];
    }
}

10-07 21:24