Objective c 目标-C“;如果不等于或;声明不起作用

Objective c 目标-C“;如果不等于或;声明不起作用,objective-c,Objective C,我对Objective-C比较陌生 我试图构造一个if语句来检查某个东西是否不等于'a'或'b',当我添加“or”部分时,它似乎对这两个语句都不起作用。如果我删除“or”,它对其中一个有效 此代码有效(对于一条语句): 同样,如果我将baddata更改为baddata2,它也能正常工作。但如果我将其更改为此(检测其中一个),则它们都不会被检测到: if (![source isEqualToString:baddata] || ![source isEqualToString:baddata2]

我对Objective-C比较陌生

我试图构造一个
if
语句来检查某个东西是否不等于'a'或'b',当我添加“or”部分时,它似乎对这两个语句都不起作用。如果我删除“or”,它对其中一个有效

此代码有效(对于一条语句):

同样,如果我将
baddata
更改为
baddata2
,它也能正常工作。但如果我将其更改为此(检测其中一个),则它们都不会被检测到:

if (![source isEqualToString:baddata] || ![source isEqualToString:baddata2])
如果
行不正确吗?我是否需要使用“nor”之类的词?如果需要,语法是什么?

您可以使用:

if (![source isEqualToString:baddata] && ![source isEqualToString:baddata2])
没有NOR运算符,但您可以使用OR,然后按如下方式否定整个条件:

if (!([source isEqualToString:baddata] || [source isEqualToString:baddata2]))

baddata
baddata2
不同时,您的条件总是正确的:任何字符串都不等于一个或另一个,因为任何字符串都不能同时等于两个不相等的值

您需要将条件更改为
&&

if (![source isEqualToString:baddata] && ![source isEqualToString:baddata2])
或用于组合中间部分:

if (!([source isEqualToString:baddata] || [source isEqualToString:baddata2]))

如果您有两个以上的“BADDATA”值,请考虑从它们构造一个散列集,使用集合包含检查而不是逻辑链/OR链。< /P>逻辑上,它是正确的(使用和运算符)<代码>:([源ISISALTROSTOR: BADDATOS&&[源ISISOALTROSTOR: BADDATA2]){}}。你把

self.songInfo.text
baddata2
搞混了。
if (!([source isEqualToString:baddata] || [source isEqualToString:baddata2]))