1

私は本当に初心者で、これが初めての投稿ですので、ご容赦ください... AddressCards の配列を含む AddressBook を持っています。「book」は NSMutableArray です。文字列を検索して、AddressBook から一致する配列を返すようにしたいと考えています。たとえば、「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 に答える