因此,对于具有良好Objective-C知识的人来说,这可能是一个愚蠢的问题.
我有一个if-statement在我检查,如果NSString等于任何东西,但 "约翰"或"迈克尔".
我尝试了以下代码,但它没有用.
if (![selectedName isEqualToString:@"John"] || ![valtNamn isEqualToString:@"Michael"]) {
// DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)
但这确实有效
if ([selectedName isEqualToString:@"John"] || ![valtNamn isEqualToString:@"Michael"]) {
// DONT DO ANYTHING
} else {
//DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)
与我NOT一起使用时我缺少什么OR?
否定条件"约翰或迈克尔"应该是
!([selectedName isEqualToString:@"John"] || [valtNamn isEqualToString:@"Michael"])
Run Code Online (Sandbox Code Playgroud)
(不是(约翰或迈克尔))
或者,换句话说(参见AND而不是OR)
![selectedName isEqualToString:@"John"] && ![valtNamn isEqualToString:@"Michael"]
Run Code Online (Sandbox Code Playgroud)
(不是约翰而不是迈克尔)
这应该是显而易见的,但它也在德摩根定律的逻辑中正式描述
要理解这一点,您可以稍微简化一下:
BOOL isJohn = [selectedName isEqualToString:@"John"];
BOOL isMichael = [selectedName isEqualToString:@"Michael"];
if (!isJohn && !isMichael) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
你写的条件实际上意味着"如果它不是迈克尔或者它不是约翰",或"不是(约翰和迈克尔)"并且总是评价,YES因为这个名字不能同时是"约翰"和"迈克尔".
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |