新开发者...我的你好世界应用程序不工作。我的琴弦有什么问题?

问题描述:

我已经添加了一个按钮,我希望将标签从“Hello World”切换到“再见世界”,现在它只是说“再见世界”并且不会改变....我在做什么错误?新开发者...我的你好世界应用程序不工作。我的琴弦有什么问题?

- (IBAction)button:(id)sender { 
    NSString *mystr = @"Hello World"; 

    if (strcmp(label.text, mystr) == 0) { 
     label.text = @"Goodbye World"; 
    } 
    else 
    { 
     label.text = @"Hello World"; 
    } 
    //label.text = [NSString stringWithFormat:@"%d", strcmp(label.text, @"Hello World")]; 
} 
+0

你最初在label.text中传递了什么? – Sarah 2012-01-31 05:25:45

+0

“继续...按下我”,但它应该切换。标签的起始位置无关紧要。 – 2012-01-31 05:26:23

试试这个:

if ([label.text isEqualToString:@"Hello World"]) { 
     label.text = @"Goodbye World"; 
} 
else 
{ 
     label.text = @"Hello World"; 
} 
+0

此代码工作!围绕if(...)代码中的代码括号[]的目的是什么?我更像是C/C++/C#程序员,所以这对我来说有点奇怪。 – 2012-01-31 05:30:01

+0

语句中的括号是Objective-C中的语法。如果你想调用一个对象的方法,语法是:[myObject myMethod]; – 2012-01-31 05:36:37

我还以为你会使用比较字符串可可的NSString的方法更安全。试试“isEqualToString”。

+0

我发现,但我用奇怪的Xcode语法挣扎了一下。我知道@用于字符串文字,但为什么围绕这段代码的括号?为什么在isEqualToString之后冒号,我期望()的。有没有一个好的语法资源开始? – 2012-01-31 05:32:57

+0

@用于创建静态NSString实例,而不仅仅是字符串。你仍然可以定义没有@符号的C字符串,但通常情况下你最好在Cocoa中使用NSStrings.Time来打破Objective-C和Cocoa的一些文档! – 2012-01-31 05:43:21