ios – 如何比较@NO和@YES与优雅,没有误报/否定的风险?

我想使用bool文字
if (condition == @NO) {

}
else if (condition == @YES) {

{

当我尝试这个时,XCode希望我使用NSNumber方法进行比较,比如isEqualTo.有没有更简单的方法(没有isEqualTo)?如果我不能,我应该使用isEqualTo,isEqualToValue还是isEqualToNumber?

解决方法

条件是什么?它是BOOL还是NSNumber?

如果condition是BOOL,那么你根本不想使用@NO或@YES.你想说

if (condition) // test if condition is true

if (!condition) // test if condition is false

if (condition == NO) // same as previous,based on personal preference

请注意,你永远不应该说

if (condition == YES)

因为BOOL实际上并不限制为0和1作为值,它可以在char中保存任何内容,因此如果条件意外地保持,例如3,则if(condition)和if(condition == YES)将表现不同.

如果condition是NSNumber,那么你仍然不想使用@NO和@YES.您只想使用-boolValue将其转换为BOOL,如

if ([condition boolValue]) // test if condition is true

if (![condition boolValue]) // test if condition is false

if ([condition boolValue] == NO) // same as previous,based on personal preference

这里的基本要点是,不要使用@NO和@YES文字进行比较.它毫无意义,而且不够优雅,因为你能用它们做的就是将它们转换回BOOL.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...