我有一个简短的问题是有人想要+15代表。 :d
//This returns nothing, nil, or "" (no quotes)
NSLog(@"alert view text field : %@",[alertView textFieldAtIndex:0].text);
//In theory this if-condition should NOT pass
if([alertView textFieldAtIndex:0].text != nil || [alertView textFieldAtIndex:0].text != @"")
{
NSLog(@"IF!");
}
//in other words, "else" should run
else {
NSLog(@"ELSE");
}
相反,我把它作为输出:
[29929:fb03]警报视图文本字段:
[29929:FB03] IF!
EIDT:好的,正如问题所回答的那样,我加入了
if(!([[alertView textFieldAtIndex:0].text isEqualToString:@""]) || !([[alertView textFieldAtIndex:0].text isEqualToString: nil]) || !([alertView textFieldAtIndex:0].text != nil))
但是如果STILL通过而且它不应该通过。我不懂。 :(
答案 0 :(得分:0)
您无法将字符串与==
进行比较。如果你这样做,你要比较两个字符串实例的指针,这不太可能是你想要的。相反,尝试:
if([alertView textFieldAtIndex:0].text != nil ||
![[alertView textFieldAtIndex:0].text isEqualToString:@""])
{
...
答案 1 :(得分:0)
使用NSStrings
比较器比较Objective-C中的isEqualToString
-
if(![[alertView textFieldAtIndex:0].text isEqualToString:@""])
NSLog(@"IF!");
答案 2 :(得分:0)
将您的运营商更改为&&
而不是||
:
//This returns nothing, nil, or "" (no quotes)
NSLog(@"alert view text field : %@",[alertView textFieldAtIndex:0].text);
//In theory this if-condition should NOT pass
if([alertView textFieldAtIndex:0].text != nil && [alertView textFieldAtIndex:0].text != @"")
{
NSLog(@"IF!");
}
//in other words, "else" should run
else {
NSLog(@"ELSE");
}
答案 3 :(得分:0)
始终使用isEqualToString方法来比较字符串
!([alertView textFieldAtIndex:0] .text isEqualToString:@“”])
答案 4 :(得分:0)
这是你的问题
[alertView textFieldAtIndex:0].text != nil
您正在将NSString与nil进行比较。想想看,你想要比较什么?您是否试图查看NSString是否包含空字符串链接,所以@“”?或者您是否试图查看NSString对象是否指向nil。
你可以在这里看到:
NSString *test = @"something in here";
if (test == nil) {
NSLog(@"String pointer is nil");
}
else
// It will pass here
NSLog(@"String pointer is not nill");
所以在上面的例子中, if 条件通过,因为指向该对象的指针不是 nil。它确实存在。