2

我有一个类AddressCards.h/m,另一个类AddressBook,现在我想创建一个搜索方法来查找 AddressBook 类中的名称,但出现了一些错误。

我想我需要我的方法来返回一个 AddressCards 类型指针,但我不确定如何返回它,因为我需要一个包含名称的数组,以防匹配超过 1 个。

这是我当前的代码:

  -(NSMutableArray *) searchName:(NSString *) someName{

        NSMutableArray *results = [NSMutableArray alloc];

        for (NSString *name in book)
        {
            if ([someName caseInsensitiveCompare:name] == NSOrderedSame)
                [results addObject:name];
        }
        return results;
    }

@end

我在这一行出现错误:if ([someName caseInsensitiveCompare:name] == NSOrderedSame) 这说明signal 1 SIGABRT我不知道它是什么:/

这是添加地址卡的方法:

-(void) addCard:(AddressCards *)theCard{

    [book addObject:theCard];
}
4

2 回答 2

3

book是 的 NSMutableArray AddressCards,但是您正在尝试使用 NSString ( ) 迭代对象name

您应该使用 object 进行迭代addressCards,然后使用相应的name属性进行比较。我相信您应该实现类似于以下代码的搜索方法:

-(NSMutableArray *) searchName:(NSString *) someName{

    NSMutableArray *results = [[NSMutableArray alloc] init];

    for (AddressCards *addressCard in book)
    {
        // do your comparison check here
        // assuming that you have a name property in AddressCards class

        if ([addressCard.name rangeOfString:someName].location != NSNotFound)
            [results addObject:addressCard.name];
    }
    return results;
}

希望这可以帮助。

编辑:使用此答案根据需要修改了比较代码。

于 2013-03-04T22:46:45.057 回答
3

init一个问题是您在创建results数组时没有调用。

NSMutableArray *results = [NSMutableArray alloc];

应该:

NSMutableArray *results = [[NSMutableArray alloc]init];

这肯定会导致SIGABRT错误。

于 2013-03-04T22:41:29.847 回答