Objective c Can';如果数组为nil,则不执行else
我创建了一个在通讯簿中搜索联系人的方法,我想将结果作为数组返回,如果有结果要打印出来,则打印“未找到” 出于某种原因,如果数组不是nil,我可以打印结果,但是else不起作用……它甚至没有给我eror,这是代码: main.mObjective c Can';如果数组为nil,则不执行else,objective-c,Objective C,我创建了一个在通讯簿中搜索联系人的方法,我想将结果作为数组返回,如果有结果要打印出来,则打印“未找到” 出于某种原因,如果数组不是nil,我可以打印结果,但是else不起作用……它甚至没有给我eror,这是代码: main.m NSMutableArray *result = [[NSMutableArray alloc] init]; result = [myBook searchName:@"jack"]; if (result != nil){
NSMutableArray *result = [[NSMutableArray alloc] init];
result = [myBook searchName:@"jack"];
if (result != nil){
for (AddressCards *nextCard in result)
NSLog(@"%@ %@", nextCard.name, nextCard.email);
}
else
NSLog(@"Not found");
地址簿
-(NSMutableArray *) searchName:(NSString *) someName{
NSMutableArray *namsFound = [[NSMutableArray alloc] init];
for (AddressCards *addressCard in book){
if ([addressCard.name rangeOfString:someName options:NSCaseInsensitiveSearch].location != NSNotFound)
[namsFound addObject:addressCard];
}
return namsFound;
}
谢谢您的
搜索名称:
方法永远不会返回nil。它有时返回一个空数组,但这不是一回事
您可以在searchName:
中执行类似操作:
返回[namsFound count]?Namsfund:无代码>
这将返回namsFound iff namsFound有1个或多个元素(换句话说,如果找到一些名称)。否则,如果您更改此项,它将返回nil.:
if (result != nil){
为此,它应该发挥作用:
if (result.count) {
您总是返回一个非零指针,因为您总是在搜索方法中alloc/init数组。如果(result!=nil){
,请使用如果(result.count>0){
它不打印“未找到”
因为它从来都不是nil
。结果总是!=nil
,因为即使在没有找到搜索名称的情况下,它也会返回一个数组-一个未填充的数组,即一个元素为零的数组。如果(result.count){
是IMO中最优雅的解决方案,因为0
相当于布尔值false
,因此结果。返回0
的count
将直接转到中,否则NSPredicate将是一种更好的搜索方式。我认为这是最优雅的方式。完成此操作后,如果(result){…
在main.m中。