使用或 || if 语句中的运算符以评估变量(不等于两(2)个字符串)
Posted
技术标签:
【中文标题】使用或 || if 语句中的运算符以评估变量(不等于两(2)个字符串)【英文标题】:Using OR || operator within if statement to assess variable (to be not equal to two(2) strings) 【发布时间】:2014-01-21 10:37:27 【问题描述】:我使用NSUserDefault
(用户默认值)来确定“列表升序排序”——使用NSFetchedResultsController
从我的核心数据堆栈中获得的列表——是否升序排序。
例如:
NSSortDescriptor *sortDescriptorPrimary = [NSSortDescriptor sortDescriptorWithKey:self.sortAttributePrimary ascending:listsSortAscending selector:@selector(compare:)];
无论用户设置如何,都有两个实体的此值始终为真,即BOOL listsSortAscending = YES;
,具体而言,按字母顺序排序的列表,例如联系人列表。
这句话后面的代码试图解释我想要实现的目标......
BOOL listsSortAscending = YES;
if ((![self.entity isEqualToString:@"Contact"]) || (![self.entity isEqualToString:@"TypeChild"]))
listsSortAscending = [self.userDefaults boolForKey:kListsSortAscending];
除了这两个实体的列表将始终按ascending:YES
排序外,其他实体将根据用户默认的listsSortAscending
进行排序。
但是,这段代码不起作用,我似乎无法正确计算出语法。
我已经阅读了很多 Stack Overflow 和其他页面,包括 Objective-C IF statement with OR condition,但是我似乎无法解决这个烦人的语法!!!
下面包含的代码确实有效,但是我的强迫症特征今天表现得很强烈,我想学习使用 OR 运算符||
的正确语法。
BOOL listsSortAscending = YES;
if (![self.entity isEqual:@"Contact"])
if (![self.entity isEqual:@"TypeChild"])
listsSortAscending = [self.userDefaults boolForKey:kListsSortAscending];
有什么建议吗?
【问题讨论】:
您的第一个代码检查“entity != Contact OR entity != TypeChild”,第二个代码检查“entity != Contact AND entity != TypeChild”... 感谢@MartinR,完全错过了。 【参考方案1】:我想你想要:
if ((![self.entity isEqualToString:@"Contact"] && ![self.entity isEqualToString:@"TypeChild"]))
这实际上不是语法的东西,而是否定的东西。有时更容易指定肯定情况而不是否定情况。但是您的第二段代码嵌套 if
s 实际上是 &&
而不是 ||
。
【讨论】:
谢谢@Wain,完全错过了。您建议的代码示例完美运行。现在明白了,不是语法的东西。否定完全让我感到困惑。以上是关于使用或 || if 语句中的运算符以评估变量(不等于两(2)个字符串)的主要内容,如果未能解决你的问题,请参考以下文章