Ожидаемое выражение перед оператором else - PullRequest
0 голосов
/ 13 февраля 2020

Я получаю сообщение об ошибке Ожидаемое выражение перед моим иначе заявлением, но я не знаю почему. Я искал другие сообщения, но не могу найти решение.

- (void)setDeviationSize:(double)newDeviation
{
        if (newDeviation != 0) {
            deviationLayer.lineWidth = 2.0 / newDeviation;
            if (newDeviation * pixelPerMeter * scrollView.zoomScale < 2 * cPointRadius) {
                deviationLayer.hidden = YES;
            } else {
                deviationLayer.hidden = NO;
                deviationLayer.transform = CATransform3DMakeScale(newDeviation, newDeviation, 0);
            }
        } else {
            deviationLayer.hidden = YES;


        } else  <---- EXPECTED EXPRESSION {

            for(LectureModel* lecture in lectures) {
            NSString *title;
            if([lecture.title length] > 30) {
                title = [NSString stringWithFormat:@"%@...", [lecture.title substringToIndex:30]];
            } else {
                title = lecture.title;
            }

            [alert addActionWithTitle:title handler:^(UIAlertAction * _Nonnull action) {
                LectureModel* full = [LectureModel findById:lecture.id];
                if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
                    [self showModelInPopover:full];
                } else {
                    [[TransitionManager shared] openModelInCatalog:full];
                }
        }
        [self presentViewController:alert animated:YES completion:nil];
             }
             }
}

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Как и vadian, и luk2302 указали, что у вас есть оператор if, к которому присоединены еще два, поэтому компилятор не понимает, с чем связан второй оператор, и выдает ошибку.

Возможно, вы хотели что-то например,

if (newDeviation != 0) {
    /* do something */
} else if (someCondition) {
    /* do something different */
} else   { 
   /* do something else */
}

Если это не тот логин c, который вы хотите, пожалуйста, объясните, чего вы хотите достичь, чтобы мы могли помочь вам лучше.

0 голосов
/ 23 апреля 2020

@ user12372692

Для достижения того, что вы хотите, есть два способа решить эту проблему -

A. if else condition making.
B. using switch case.

Способ A: -

if else condition записывается следующим образом: -

if (condition 1) {
    /* do something for condition 1 is true */
} else if (condition 2) {
     /* do something for condition 2 is true */
} else   { 
   /* do something for  both condition 1 and 2 are false. */
}

, поэтому в соответствии с этим ваше условие должно быть: -

if (newDeviation != 0) {
    /* do something  */
} else if (OtherCondition) {
     /* do something*/
} else   { 
   /* do something for  both above two conditions are false */
}

Способ B: -

switch(newDeviation){
   case (newDeviation != 0 ) : {/* Do your work */}; break;
   case (condition 2) : {/* Do your work */}; break;
   case (condition 3) : {/* Do your work */}; break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...