我只是潜入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'?
答案 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变量定义吗?