嗨我有一个问题我想测试我的字符串是不是空的并且不等于string1我想做点什么但它不起作用。
我的代码:
NSUserDefaults *namePrefs = [NSUserDefaults standardUserDefaults];
NSString *savedName = [namePrefs stringForKey:@"myKey"];
if ((savedName != nil)&&([savedName isEqualToString:@"string1"])){ //
[self myFunction];
}
当savedName为nil时,它不会进入
当它的值不是nil而不是string1时它会进入
但是当savedName是string1时,它会输入,为什么?
感谢任何帮助再见
答案 0 :(得分:5)
你只是错过了条件中的“not”:
(savedName != nil) && ([savedName isEqualToString:@"string1"])
当savedName
不是nil
并且等于给定字符串时,这将是真的。你想要这个:
(savedName != nil) && (![savedName isEqualToString:@"string1"])
另请注意,您可以删除第一部分,因为发送到nil
个对象的邮件会返回NO
:
![nil isEqualToString:@"string1"] ≈ !NO ≈ YES
因此,nil
字符串被视为与@"string1"
不同。听起来合乎逻辑。
答案 1 :(得分:4)
因为你告诉它到这里:
if ((savedName != nil)&&([savedName isEqualToString:@"string1"])){
更改为:
if ((savedName != nil)&&(![savedName isEqualToString:@"string1"])){ //
答案 2 :(得分:2)
是的,如果savedname = string1,它将进入 然后它会进入街区,因为它是令人满意的条件。
savedname!= nil true
savedname == string1 true
那么为什么它不应该进入街区。它将进入bcoz它满足你的条件。