如何创建一个方法来返回另一个类的对象的数组?

时间:2013-03-04 22:24:46

标签: objective-c

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

我认为我需要我的方法来返回一个AddressCards类型指针,但我不知道如何返回它,因为我需要一个包含名称的数组以防万一匹配..

这是我目前的代码:

  -(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];
}

2 个答案:

答案 0 :(得分:3)

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

NSMutableArray *results = [NSMutableArray alloc];

应该是:

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

这肯定会导致SIGABRT错误。

答案 1 :(得分:3)

bookAddressCards的NSMutableArray,但是您尝试使用NSString(name)迭代对象。

您应该使用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;
}

希望这有帮助。

编辑:使用this answer修改比较代码。