Objective-C - Hello World应用程序修改

0 iphone objective-c

我正在学习做"Hello,World"应用程序.但我有一个问题.我想更改代码,结果显示"World,Hello",但无法弄清楚我做错了什么.

这是原始代码:

- (IBAction)changeGreeting:(id)sender {

self.userName = self.textField.text;

NSString *nameString = self.userName;
if ([nameString length] == 0) {
    nameString = @"World";
}
    NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
    self.label.text = greeting;
}
Run Code Online (Sandbox Code Playgroud)

我认为如果我可以改为:

- (IBAction)changeGreeting:(id)sender {

self.userName = self.textField.text;

NSString *nameString = self.userName;
if ([nameString length] == 0) {
    nameString = @"World";
}
    NSString *greeting = [[NSString alloc] initWithFormat:nameString , @"Hello, %@!"];
    self.label.text = greeting;
}
Run Code Online (Sandbox Code Playgroud)

然而,这仍然没有奏效.我该怎么做才能做到这一点?

Oma*_*ith 5

改变这一行

NSString *greeting = [[NSString alloc] initWithFormat:nameString , @"Hello, %@!"];
Run Code Online (Sandbox Code Playgroud)

NSString *greeting = [[NSString alloc] initWithFormat:@"%@, Hello!", nameString];
Run Code Online (Sandbox Code Playgroud)

initWithFormat,当你写@"%@, Hello!"的时候使用占位符"%@"表明下面的字符串nameString将被它替换掉所以当@"%@, Hello!"我们真正的意思是@"nameString, Hello!"(你的例子中的nameString是World)