2012-10-01 172 views
-3

使用isEqualToString我用下面的代码来检查,如果字符串不等于值:在IF语句或

if (![myString isEqualToString:@"text1"]) 
//DO SOMETHING 

现在我想2个或多个字符串与此代码比较:

if (![myString isEqualToString:@"text1"] || ![myString isEqualToString:@"text2"]) 
//DO SOMETHING 

它不工作......当我把它分成2个IF语句它的工作时,这里有什么问题?

回答

0

用途:

if (![myString isEqualToString:@"text1"] || ![myString isEqualToString:@"text2"]) 

但有一些奇怪的这种逻辑。如果它不是text1或者它不是text2始终保证为真,因为它不能同时出现。我强烈建议您查看您的逻辑条件。

像你要检查它是否没有text1text2,在这种情况下,代码应该是这听起来对我说:

if (! ([myString isEqualToString:@"text1"] || [myString isEqualToString:@"text2"])) 
+0

谢谢,第二个代码正是我所需要的。 – vadim

+0

@Inafziger你在乎解释这最后的评论? – mprivat

+0

不,我只是错过了你已经把括号内的两个比较。 :-) – lnafziger

1

您需要使用||作为OR。

例如if (![myString isEqualToString:@"text1"] || ![myString isEqualToString:@"text2"])

+0

(或者,即使是OR) – Wildaker

+0

已修复,谢谢:P – Martin

1

如果你想MyString的时候做的东西不是非此即彼的价值观(这里唯一有意义的事),你可以使用:

if (![myString isEqualToString:@"text1"] && ![myString isEqualToString:@"text2"]) 
     // DO SOMETHING 

这里使用了&&运营商,这意味着他们都必须是真实的。例如“myString不是text1 myString不是text2”。