1

我在这里是一个真正的初学者,这是我的第一篇文章,所以请耐心等待......我有一个包含一系列地址卡的地址簿。'book' 是一个 NSMutableArray。我想查找一个字符串并让它从地址簿中返回一个匹配数组。例如,搜索“fr”会返回“freddy”、“frank”、“franklin”。我的问题是什么?谢谢您的帮助。

- (NSMutableArray *)lookup:(NSString *)theName {
    NSMutableArray *newArray = [[NSMutableArray alloc]init];
    AddressCard *nextCard;
    for(nextCard in book) {
        if ([nextCard.name rangeOfString:theName].location != NSNotFound) {
             [newArray addObject:nextCard];
        }
    } 
    if (nextCard) {
        return newArray;
    } else {
        return nil;
    }
}
4

1 回答 1

1

这应该有效:

- (NSArray *)lookup:(NSString *)theName {
    NSMutableArray *newArray = [[NSMutableArray alloc] init];
    for(AddressCard *card in book) {
        if ([card.name rangeOfString:theName].location != NSNotFound) {
             [newArray addObject:card];
        }
    } 

    return [newArray count] ? [newArray copy] : nil;
}

你也可以使用-filteredArrayUsingPredicate:

- (NSArray *)lookup:(NSString *)theName {
   NSArray *filteredCardsMatchingName = [books filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", theName]];
   return [filteredCardsMatchingName count] ? filteredCardsMatchingName : nil;
}
于 2013-11-06T22:36:15.650 回答