2012-03-01 20 views
1

私はiOSプラットフォームのプログラミングの世界でちょうど踊り、私は最初のHello Worldアプリケーションを作った。Hello world app

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; 
} 

に話しているコードです:私は2つのエラー「期待表現」と「の使用を取得

- (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

変更:

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

へ:

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

次の2つの問題を抱えて:

Stringはあなたのプログラムには何も意味しなかった、文字列と呼ばれるいかなる変数やクラスがありませんが。おそらくちょうどnameStringを意味するでしょう。

文字列を==と異なるように比較する必要があります。代わりにisEqualToStringを使用してください。

==が同一性をチェックします。つまり、2つのオブジェクトが同じオブジェクトで、メモリ内の同じアドレスを指しているかどうかです。

isEqualToデフォルトでは同じことが行われますが、異なる等価比較を実行するにはオーバーライドできます。 isEqualToStringはこれと似ていますが、より明示的です。


これは、コードでの唯一の問題ではないかもしれませんが、私が見つけた最も明白な問題です。

@Jimは別の問題を発見しました:objective-cの文字列は@記号で始まります。

+0

THXジェームズ、あなたのコードは明らかexplenaition – user1242574

+0

問題ありませんのためにそれとありがとうをしました。私の答えが最も有用であると分かったら、それを正しいものとしてマークすることを忘れないでください。 –

0

文字列 == "キム"

あなたはどこかに文字列変数定義を持っていますか?

1
if (String == "Kim") { 

この行にはいくつかの問題があります。

Objective-Cの文字列リテラルは、@"foo"の形式です。@がありません。

nameString@"Kim"を比較すると思われますが、単にStringを使用しています。これはあなたが使用している変数の名前ではありません。

NSStringのインスタンスと==を比較することはできません。これらはオブジェクトであり、ポインタのメモリアドレスを比較するだけです。文字列を比較するには、いずれかの文字列のisEqualToString:メソッドを使用する必要があります。例えば:

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