Csa*_*abi 0 cocoa boolean-logic objective-c
嗨,我有一个问题,我想测试,如果我的字符串不是空的,不等于string1我想做的事,但它不起作用.
我的代码:
NSUserDefaults *namePrefs = [NSUserDefaults standardUserDefaults];
NSString *savedName = [namePrefs stringForKey:@"myKey"];
if ((savedName != nil)&&([savedName isEqualToString:@"string1"])){ //
[self myFunction];
}
Run Code Online (Sandbox Code Playgroud)
当savedName为nil时,它不会进入
当它的值不是nil而不是string1时它进入它也没关系
但是当savedName是string1时它会进入,为什么?
谢谢你的任何帮助
你只是错过了条件中的"not":
(savedName != nil) && ([savedName isEqualToString:@"string1"])
Run Code Online (Sandbox Code Playgroud)
当savedName
不是nil
和等于给定的字符串时,这将是真的.你想要这个:
(savedName != nil) && (![savedName isEqualToString:@"string1"])
Run Code Online (Sandbox Code Playgroud)
另请注意,您可以删除第一部分,因为发送给nil
对象的消息会返回NO
:
![nil isEqualToString:@"string1"] ? !NO ? YES
Run Code Online (Sandbox Code Playgroud)
因此,nil
字符串被认为是不同的@"string1"
.听起来合乎逻辑.
归档时间: |
|
查看次数: |
357 次 |
最近记录: |