0

在下面的 else if 中,最后一个 else 条件没有执行?

请帮我

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

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

4

3 回答 3

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

    }                      

    }               
于 2013-05-18T12:18:08.763 回答
0

你有三个声明

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

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

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

最后一条语句没有被执行,因为 first 和 second 捕获了所有可能的情况。

第一次抓[totalBooksId containsObject:currentbook] == true,第二次抓,[totalBooksId containsObject:currentbook] == false没有第三种可能。

于 2013-05-18T12:19:36.407 回答
0

如果 else-if 块上的最后一个 else 没有被命中,它通常意味着以下任何一种:

  1. 初始 if 子句或以下 else-if 子句中的条件之一为真
  2. 评估的条件之一改变了程序路径(异常、堆栈损坏等)
  3. 从未达到整个 if-else 块的代码

在您的情况下,它似乎是第一种情况,因为其中一个 else if 条件与另一个相反。

([totalBooksId containsObject:currentbook]) 为真,或 !([totalBooksId containsObject:currentbook]) 为真。要打到决赛else,他们都必须是假的。

于 2013-05-18T12:09:01.453 回答