如何创建一个方法来返回一个数组与另一个类的对象?
我有一类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];
}
book
是AddressCards
一个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;
}
希望这可以帮助。
编辑:使用此答案根据需要修改比较代码。
一个问题是在创建results
数组时你没有调用init
。
NSMutableArray *results = [NSMutableArray alloc];
应该:
NSMutableArray *results = [[NSMutableArray alloc]init];
这肯定会导致SIGABRT
错误。
上一篇: How to create a method to return an array with object of another class?