我有一个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];
}
答案 0 :(得分:3)
一个问题是您在创建init
数组时没有调用results
。
NSMutableArray *results = [NSMutableArray alloc];
应该是:
NSMutableArray *results = [[NSMutableArray alloc]init];
这肯定会导致SIGABRT
错误。
答案 1 :(得分:3)
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;
}
希望这有帮助。
编辑:使用this answer修改比较代码。