Итерировать переменную в условии else if? - PullRequest
0 голосов
/ 18 октября 2011

Я пытаюсь создать оператор if с условием, зависящим от объекта переменной. Как я могу пойти по этому поводу?

Вот суть того, что я пытаюсь сделать ...

if ([gestureRecognizer state] == UIGestureRecognizerStateEnded)
{       
    if (somecondition)
    {
        //Do stuff
    }
    else if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray**.frame))
    {
        //Do stuff
    }   
}

Как я могу получить условие else если проверить более одного фрейма UIView перед тестированием true или false?

Обновленный код:

Что мне делать в этом случае?

if ([gestureRecognizer state] == UIGestureRecognizerStateEnded)
{       
    if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray_1**.frame))
    {
        //Do stuff
    }
    else if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray_2**.frame))
    {
        if (condition) {
            //do stuff
        }
        else if (condition){
            //do something else
        }
    }   
    else if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray_3**.frame))
    {
        if (condition) {
            //do stuff
        }
        else if (condition){
            //do something else
        }
    }   
    else if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray_4**.frame))
    {
        if (condition) {
            //do stuff
        }
        else if (condition){
            //do something else
        }
    }   
}

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Насколько мне известно, нет способа сделать то, что вы пытаетесь сделать с существующим синтаксисом лаконично. Вместо этого рассмотрите возможность категоризации NSArray, чтобы добавить метод, такой как -containsIntersectingRect:(CGRect)rect, который проходит через массив объектов NSValue - массивы могут содержать только объекты, поэтому вам придется вставить свои CGRect в массив, завернутый NSValue объектов - и ищет хотя бы один положительный случай для CGRectIntersectsRect.

Это по крайней мере сделает синтаксис более собранным и абстрагированным в единый метод для вашей серии условных выражений.

1 голос
/ 18 октября 2011

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

if ([gestureRecognizer state] == UIGestureRecognizerStateEnded)
{
    // imagesArray is an NSArray holding UIImages
    for (UIImage *image in imagesArray) {
        if (CGRectIntersectsRect(currentImage.frame, image.frame)) {
            if (someCondition) {
                // do stuff
            } else {
                // do something else
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...