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,即使最后一个字符是space,执行下的代码if statement。它是如何发生的?有人可以指出我的愚蠢错误吗?提前致谢。

更新: 对不起,我总是忘记如何在 Objective-C 中比较字符串,我已经标记了这个问题,谢谢大家的回答。

4

3 回答 3

5

这不是if语句:NSStringObjective C 中的 s 应该与isEqualToString:方法进行比较,而不是与检查引用相等性!=的or运算符进行比较:==

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

代替

if (lastChar != @" ")

利用

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

因为lastChar不是 a char,所以它是一个NSString对象。

于 2013-05-30T17:46:55.257 回答
0

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

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

}
于 2013-05-30T17:47:00.430 回答