2012-03-01 155 views
1

我剛剛在iOS平臺編程的世界中潛水,並且我已經制作了我的第一個Hello World應用程序。你好世界應用程序

我想添加額外的功能到應用程序來學習更多的Xcode編程。

簡而言之,應用程序會添加您在@ hallo文本字段中輸入的內容,如果您插入任何內容,則表示Hello World !. (它增加了世界!)

現在我想要應用程序識別某個輸入,所以如果我輸入某個名稱(金)它不給出標準響應「你好金!」但例如你好女孩!

這是添加「世界!」的代碼如果你讓輸入爲空,在「你好」之後,所以我想這是爲額外功能添加額外代碼的地方。

這是我在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; 
} 

我得到兩個錯誤「預期的表達」和「的使用未申報標識符'String';你的意思是'NSString'嗎?

回答

3

更改:

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

到:

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

你有兩個問題:

String並不意味着什麼你的程序,也沒有所謂的字符串變量或類。你可能只是意思是nameString。請使用isEqualToString代替。

==檢查身份。這就是兩個對象是否是相同的對象,並指向內存中的相同地址。

isEqualTo默認情況下執行相同的操作,但可以覆蓋執行不同的相等比較。 isEqualToString就是這樣,但更明確。


這可能不是您的代碼唯一的問題,但它是我找到的最明顯的問題。

@Jim發現另一個問題:objective-c中的字符串以@符號開頭。

+0

THX詹姆斯,你的代碼做到了,thanx的明確explenaition – user1242574 2012-03-02 09:30:43

+0

沒問題。如果您發現它最有幫助,請不要忘記將我的答案標記爲正確。 – 2012-03-02 09:56:40

0

字符串 == 「金」

你有字符串變量定義的地方?

1
if (String == "Kim") { 

這條線有幾個問題。

Objective-C中的字符串文字格式爲@"foo" - 您錯過了@

您似乎想要比較nameString@"Kim",但您只是簡單地使用String。這不是您正在使用的變量的名稱。

您無法將NSString==的實例進行比較 - 它們是對象,並且您正在比較指針的內存地址。爲了比較字符串,您應該使用其中一個字符串的isEqualToString:方法。例如:

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