0

アプリでカスタム キーボードを作成しました。ユーザーがスペースバーを押すと、次のコードが実行されます。

NSString *lastChar = [myTextField.text substringFromIndex:[myTextField.text length] -  1];

NSLog(@"lastChar is `%@`", lastChar);

if (lastChar != @" ")
{
   NSString *currentString = [NSString stringWithFormat:@"%@ ", myTextField.text];
   [myTextField setText:currentString];
}

そして、ユーザーが最後に使用したシンボルが だった場合space、彼はそれを再び使用することはできません (私の場合は必要ありません)。ただし、コードはif statementまだ実行中です。だから私はでチェックを行いました.最後のNSLog文字が. それはどのように起こりますか?誰かが私の愚かな間違いを指摘できますか? 前もって感謝します。spaceif statement

更新: 申し訳ありませんが、Objective-C で文字列を比較する方法をいつも忘れています。既に質問にフラグを付けました。回答者の皆様に感謝します。

4

3 に答える 3

5

それはifステートメントではありません: NSStringObjective C の s は、参照の等価性をチェックするor演算子でisEqualToString:はなく、メソッドと比較する必要があります。!===

if (![lastChar isEqualToString:@" "]) {
    ...
}
于 2013-05-30T17:46:28.693 に答える
0

それ以外の

if (lastChar != @" ")

使用する

if (![lastChar isEqualToString:@" "])

lastCharではないので、charオブジェクトNSStringです。

于 2013-05-30T17:46:55.257 に答える
0

これは何千回も尋ねられました。Objective-C (および他の多くの言語) では、そのような文字列を比較することはできません。と呼ばれるコンパレータメソッドを使用する必要がありますisEqualToString:

if (![lastChar isEqualToString:@" "]) {

}
于 2013-05-30T17:47:00.430 に答える