2

您好,我在使用多个 if 语句时遇到问题。这是我的代码:

if ([itemOnSpecial caseInsensitiveCompare: @"yes"] == NSOrderedSame) {
    UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
    specialLabel.text = specialPrice;
    [specialLabel setHidden:NO]; 
    }
//This statement is completely skipped

if ([isOnBulkSpecial caseInsensitiveCompare:@"yes"] == NSOrderedSame) {
            UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
            specialLabel.text = bulkSpecialPrice;
            [specialLabel setHidden:NO]; 

}else{
    UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
    [specialLabel setHidden:YES];
}

仅考虑第二个 if 语句。第一个 if 语句似乎完全被忽略了。

4

4 回答 4

1

试试这样的代码:

if ([itemOnSpecial isEqualToString: @"yes"] == NSOrderedSame) {
    UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
    specialLabel.text = specialPrice;
    [specialLabel setHidden:NO]; 

if ([isOnBulkSpecial caseInsensitiveCompare:@"yes"] == NSOrderedSame) {
            UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
            specialLabel.text = bulkSpecialPrice;
            [specialLabel setHidden:NO]; 

}else{
    UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
    [specialLabel setHidden:YES];
}
}

或者像这样:

   if ([itemOnSpecial isEqualToString: @"yes"] == NSOrderedSame) {
        UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
        specialLabel.text = specialPrice;
        [specialLabel setHidden:NO]; 
        } else if ([isOnBulkSpecial caseInsensitiveCompare:@"yes"] == NSOrderedSame) {
                UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
                specialLabel.text = bulkSpecialPrice;
                [specialLabel setHidden:NO];

    }else{
        UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
        [specialLabel setHidden:YES];
    }

我不明白你的脚本,但第一个 if 语句与你代码中的第二个无关。

于 2013-08-27T06:34:14.737 回答
1

如果您将代码更改为:

if ([itemOnSpecial caseInsensitiveCompare: @"yes"] == NSOrderedSame) {
    UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
    specialLabel.text = specialPrice;
    [specialLabel setHidden:NO]; 
    }
else
{


   if ([isOnBulkSpecial caseInsensitiveCompare:@"yes"] == NSOrderedSame) {
        UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
            specialLabel.text = bulkSpecialPrice;
            [specialLabel setHidden:NO]; 

   }else{
       UILabel *specialLabel = (UILabel*) [cell viewWithTag:5];
       [specialLabel setHidden:YES];
   }
}

那么第二个 if 语句只有在第一个没有通过时才会被调用。这样该specialLabel.text属性将不会更改两次,并且该值不会在第二次被覆盖,如果

于 2013-08-27T07:02:40.823 回答
0

第一个语句将检查区分大小写的字符串,而第二个语句将检查不区分大小写的字符串。

当您的itemOnSpecial's值仅等于 @"yes" 在这种情况下,它将被输入,否则它将跳过,而在第二种情况下,您的字符串等于 @"Yes",@"YES",@"yEs",@ “yes”在所有情况下都会进入。

所以我希望你能理解我的回答...

于 2013-08-27T06:33:09.027 回答
0

在第一个 if 条件上设置断点并打印条件以查看它返回的内容。然后完成单步执行代码。

前任。

(lldb) p ([itemOnSpecial caseInsensitiveCompare: @"yes"] == 0)
(bool) $1 = true

其中 NSOrderedSame == 0。

于 2013-08-27T06:45:07.830 回答