我在自己的应用中制作了自定义键盘。当用户按空格键时,此代码运行:
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中的字符串,我已经标记了这个问题,谢谢大家的帮助。
答案 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:@" "]) {
}