否则条件没有执行?

时间:2013-05-18 12:01:36

标签: ios objective-c if-statement nested

在其他情况下,如果,最后一个其他条件没有执行?

请帮帮我

if (Flag==1)
{
    ...
}
else if ([totalBooksId containsObject:currentbook])
{
    ...
}
else if (![totalBooksId containsObject:currentbook])
 {
    ...
} else {
    ...
}

所有变量都有一些值,但还是没有执行。 上面的else语句根本没有执行?请帮帮我

3 个答案:

答案 0 :(得分:1)

这将起作用

  if(Flag==1){
        if([OwnList containsObject:currentbook]){
            if(fileExists) {
                [self renameReadButton];
            }else if(!fileExists){
                [self renameDownloadButton];
            }
            [self renameLendButton];
        }


    }

        else if([totalBooksId containsObject:currentbook]){


                    //Checking bought books
                    if([OwnList containsObject:currentbook]){

                        if(fileExists){
                            [self renameReadButton];
                        }else {
                          [self renameDownloadButton];
                        }

            } else{

        [self renameBuyButton];

        }                      
    }
    else if(![totalBooksId containsObject:currentbook]) {  


                    if([freeList containsObject:currentbook]){
                        if(fileExists){                                
                            [self renameReadButton];
                        }else{                    

                            [self renameDownloadButton];
                        }                               

            }  else{

        [self renameBuyButton];

    }                      

    }               

答案 1 :(得分:0)

如果else-if块上的最后一个没有被击中,通常意味着其中任何一个:

  1. 初始if子句或以下else-if子句中的一个条件为真
  2. 其中一个评估条件改变了程序路径(异常,堆栈损坏等)
  3. 从未达到整个if-else块的代码
  4. 在你的情况下,它似乎是第一种情况,因为其中一个if条件与另一个条件相反。

    要么([totalBooksId containsObject:currentbook])为真,要么!([totalBooksId containsObject:currentbook])为真。要击中最后的其他人,他们两个都必须是假的。

答案 2 :(得分:0)

你有三个陈述

else if([totalBooksId containsObject:currentbook]) // first
{

} 
else if(![totalBooksId containsObject:currentbook]) // second
{

}
else { [self renameBuyButton]; }  // last

不执行最后一条语句,因为第一条和第二条语句捕获所有可能的情况。

第一次捕获[totalBooksId containsObject:currentbook] == true,第二次导弹[totalBooksId containsObject:currentbook] == false并且没有第三种可能性。