2015-05-28 9 views
-6

мне нужно проверить в два строке, если таковая строка содержит какую-либо конкретную строку или нееще если условие понятие

NSString *startLocationAddress = @"Any address for start location"; 
NSString *endLocationAddress = @"Any address for end location"; 

if ([startLocationAddress rangeOfString:@"Australia"].location == NSNotFound) 
{ 
    NSLog(@"string does not contain Australia"); 
    startLocationAddress = [startLocationAddress stringByAppendingString:@",Australia"]; 
} 
else if ([endLocationAddress rangeOfString:@"Australia"].location == NSNotFound) 
{ 
    NSLog(@"string does not contain Australia"); 
    endLocationAddress =[endLocationAddress stringByAppendingString:@",Australia"]; 
} 
else { 
    NSLog(@"string contain Australia"); 
} 

Как моих обе строки не содержит «Австралию». Итак, первое условие будет проверено первым, и если первое условие будет действительным, то оно выйдет из условий, если первое условие недействительно, тогда только он проверяет условие else if. Таким образом, если else, если условие работает.

+2

Какое ожидаемое поведение? И каково фактическое поведение? – augurar

+2

В случае, если else, если какой-либо один случай удовлетворен, тогда другие случаи не будут проверены. –

+1

Вам просто нужны утверждения 2 if, а не другое, если ... – Wain

ответ

1

Вы лучше восстановить это нравится:

if ([startLocationAddress rangeOfString:@"Australia"].location == NSNotFound) 
{ 
    //codes.. 
} 
else 
{ 
    NSLog(@"startLocationAddress contain Australia"); 
} 

if ([endLocationAddress rangeOfString:@"Australia"].location == NSNotFound) 
{ 
    //codes.. 
} 
else 
{ 
    NSLog(@"endLocationAddress contain Australia"); 
} 

и посмотреть, как если - еще если - еще оператор работает .. Смотрите: @ Hanky ​​웃 муры ответ для этого, поскольку путаница очень подвержена нам.

if (ifcondition) 
{ .. } 
else if (elseifcondition) 
{ .. } 
else 
{ .. } 
/* 
if `ifcondition` == true, dont expect anything from `else-if` or `else`, 
compiler won't care about them anymore. that goes with `else-if` and `else` as well.. 
*/ 
+3

'Вам лучше 'изменить формулировку этого ответа. Хехе шутя. Если вы не знали «лучше», это не значит «лучше будет». Это своего рода сила: –

+0

hahaha .. вы заметили! haha .. хорошо глаз .. Lols .. – 0yeoj

4

Поскольку мои обе строки не содержат «Австралия». Во-первых, если условие работает нормально, и добавить «Австралия» в строку, а второй еще, если условие не работает

Как на земле может ли else if блок выполнится, когда он соответствующий if был выполнен? Ожидание нелогично.

Если вы хотите, чтобы ваш else if блок также проверить затем отделить его от основного if и начать новое условие if, не является else if

+0

Panky, согласился с моей ошибкой, код, который я опубликовал, не является логичным, запутанным с основами. –

0

В случае-то еще, если-иначе условии, если какой-либо из одного в получает сжато будет игнорировать остальную часть условия. Это означает, что если First будет удовлетворен, тогда он будет игнорировать «else if-else». Следовательно, ваше второе условие не выполняется.

0

Вы должны прочитать основную логику выполнения if else.

Вот пример

int x=70; 
string Grade; 

IF (x > 90) THEN 
Grade = "O" 
ELSE IF (x > 80) THEN 
Grade = "A" 
ELSE IF (x > 70) THEN 
Grade = "B" 
ELSE IF (x > 60) THEN 
Grade = "C" 
ELSE 
Grade = "F" 

Здесь значение переменной Grade будет только по одному на выполнение.

Смежные вопросы