“if”语句不能正常工作?

时间:2013-05-30 17:44:49

标签: ios objective-c if-statement

我在自己的应用中制作了自定义键盘。当用户按空格键时,此代码运行:

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中的字符串,我已经标记了这个问题,谢谢大家的帮助。

3 个答案:

答案 0 :(得分:5)

不是if声明:目标C中的NSString应与isEqualToString:方法进行比较,而不是与!===运算符进行比较,检查引用相等

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

答案 1 :(得分:0)

而不是

  

if(lastChar!= @“”)

使用

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

由于lastChar不是char,因此它是NSString个对象。

答案 2 :(得分:0)

这已被问了一千次。您无法比较Objective-C中的字符串(以及许多其他语言)。您必须使用名为isEqualToString:的比较器方法。

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

}