Hello world应用程序

时间:2012-03-01 12:29:33

标签: objective-c ios

我只是潜入iOS平台的编程世界,我已经制作了我的第一个Hello World应用程序。

我想在应用程序中添加额外的功能,以便在Xcode中学习更多编程。

简而言之,应用程序会添加您在文本字段@ hallo中提供的输入,如果您不插入任何内容,则表示Hello World!。 (它增加了世界!)

现在我希望应用程序识别某个输入,所以如果我输入某个名称(Kim),它不会给出标准响应“hello Kim!”但是比如你好女孩!

这是添加“世界”的代码。在“hello”之后,如果你输入为空,那么我认为这是为额外功能添加一些额外代码的地方。

这是我在HellowWorldViewController.m

中讨论的代码
- (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;
}

这就是我提出的:

- (IBAction)changeGreeting:(id)sender {

    self.userName = self.textField.text;

    NSString *nameString = self.userName;
    if ([nameString length] == 0) {
        nameString = @"World";
    }
    if (String == "Kim") {
        nameString = @"Girl";
    }

    NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
    self.label.text = greeting;
}

我得到两个错误“预期表达式”和“使用未声明的标识符'字符串';你的意思是'NSString'?

3 个答案:

答案 0 :(得分:3)

变化:

if (String == "Kim") { nameString = @"Girl"; }

为:

if ([nameString isEqualToString:@"Kim"]) { nameString = @"Girl"; }

你有两个问题:

String对你的程序没有任何意义,没有变量或类叫做String。你可能只是想nameString

字符串需要与使用==进行不同的比较,因此请改用isEqualToString

==检查身份。这就是两个对象是否是同一个对象并指向内存中的相同地址。

默认情况下,

isEqualTo执行相同的操作,但可以重写以执行不同的相等比较。 isEqualToString就像这样,但更加明确。


这可能不是您的代码唯一的问题,但它是我发现的最明显的问题。

@Jim发现了另一个问题:objective-c中的字符串以@符号开头。

答案 1 :(得分:1)

if (String == "Kim") {

这条线有几个问题。

Objective-C中的字符串文字格式为@"foo" - 您缺少@

您似乎想要将nameString@"Kim"进行比较,但您只是使用String。这不是您正在使用的变量的名称。

您无法将NSString的实例与==进行比较 - 它们是对象,而您所做的只是比较指针的内存地址。为了比较字符串,您应该使用其中一个字符串的isEqualToString:方法。例如:

if ([nameString isEqualToString:@"Kim"]) {

答案 2 :(得分:0)

字符串 ==“Kim”

你在某处有String变量定义吗?