Лучший способ, чем это, найти UIImageView, который может быть в нескольких массивах? - PullRequest
0 голосов
/ 23 октября 2011

Мне нужно найти, в каком массиве находится определенный imageView, а затем, когда найден, делать вещи с массивом.Вот мой первый подход:

        BOOL pieceMatchInLeft = NO;
        BOOL pieceMatchInRight = NO;
        BOOL pieceMatchInNotMoved = NO;

        for (UIImageView *pieceMatch in firstWordMoveLeftArrayCopy)
        {
            pieceMatchInLeft = piece == pieceMatch;
            if (pieceMatchInLeft) break;
        }
        for (UIImageView *pieceMatch in firstWordMoveRightArrayCopy)
        {
            pieceMatchInRight = piece == pieceMatch;
            if (pieceMatchInRight) break;
        }
        for (UIImageView *pieceMatch in firstWordLettersNotMovedArray)
        {
            pieceMatchInNotMoved = piece == pieceMatch;
            if (pieceMatchInNotMoved) break;
        }

        if (pieceMatchInNotMoved)
        {
            NSLog(@"Piece is in Not Moved.");
        }
        if (pieceMatchInRight)
        {
            NSLog(@"Piece is in Right.");
        }
        if (pieceMatchInLeft)
        {
            NSLog(@"Piece is in Left.");
        }

Я уверен, что есть гораздо лучший способ сделать то, что я пытаюсь сделать здесь.Делая это таким образом, мне придется применить точно такую ​​же логику ко всем трем операторам if, а не только к массиву, который содержит «кусок» (UIImageView)

Спасибо, ребята!

Ответы [ 2 ]

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

Вы можете использовать функцию containsObject, которая по-прежнему требует трех операторов if, но исключает циклы for. Если вы используете else if, он оценивает только if, пока не введет единицу. Что помогает.

Так что в конечном итоге это будет выглядеть так:

if([firstWordMoveLeftArrayCopy containsObject:piece])
    //do something
else  if([firstWordMoveRightArrayCopy containsObject:piece])
    //do something
(else //if it has to be in one of the arrays or)
else if([firstWordLettersNotMovedArray containsObject:piece])
    //something else

Другим вариантом является создание пользовательского объекта или подкласса UIImageView, который содержит перечисление того, где он находится.

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

Не можете ли вы расширить UIImageView и добавить свойство status, которое сообщит вам, в каком массиве находится фрагмент?

...