-2

UILabel在 Xcode 中使用这个条件语句做错了什么?

过度简化的示例,但我正在尝试更改UILabelUILabel.

-(IBAction)answerQuestion:(id)sender{
    NSString *startingLableContent = @"Do dogs bark?";
    NSString *answer = @"Yes.";
    NSString *askAnother = @"What else do you want?";
    if (mainLable.text == startingLableContent) {
        mainLable.text = answer;
    }else if (mainLable.text == answer){
        mainLable.text = askAnother;
    }
}
4

5 回答 5

1

您应该使用它们进行比较isEqualToString

像这样:

if ([mainLable.text isEqualToString:startingLableContent]) 

否则你正在测试内存位置而不是内容。

于 2013-04-30T19:32:25.980 回答
0

在 Objective-C 中比较字符串,使用isEqualToString

-(IBAction)answerQuestion:(id)sender{
    NSString *startingLableContent = @"Do dogs bark?";
    NSString *answer = @"Yes.";
    NSString *askAnother = @"What else do you want?";
    if ([startingLableContent isEqualToString:mainLable.text]) {
        mainLable.text = answer;
    }else if ([answer isEqualToString:mainLable.text]){
        mainLable.text = askAnother;
    }
}
于 2013-04-30T19:32:41.177 回答
0

尝试这个:

if ([mainLable.text isEqualToString:startingLableContent]) {
// do stuff
}
于 2013-04-30T19:33:18.357 回答
0

==

事实证明,你不能只说if (someString == someOtherString)。它几乎总会回来NO

它与字符串在内存中的存储位置有关。你可以使用==int's 和 double's 之类的东西,但是使用 NSString's,你需要做:

if ([mainLabel.text isEqualToString:someOtherString])

因此,您的方法如下所示:

-(IBAction)answerQuestion:(id)sender{
    NSString *startingLableContent = @"Do dogs bark?";
    NSString *answer = @"Yes.";
    NSString *askAnother = @"What else do you want?";
    if ([mainLable.text isEqualToString:startingLableContent]) {
        mainLable.text = answer;
    }else if ([mainLable.text isEqualToString:answer]){
        mainLable.text = askAnother;
    }
}
于 2013-04-30T19:33:52.377 回答
0

您比较的是指针,而不是实际的字符串。如果要比较字符串,请考虑isEqualToString改用。

于 2013-04-30T19:35:02.680 回答