У меня есть два массива анимаций, одна анимация «до» и одна анимация «после», которые должны объединяться в моих блоках анимации. Я хочу рандомизировать порядок, в котором они выполняются. Я создал массив чисел 0-3, вот так:
NSNumber *w = [NSNumber numberWithUnsignedInt: 0];
NSNumber *x = [NSNumber numberWithUnsignedInt: 1];
NSNumber *y = [NSNumber numberWithUnsignedInt: 2];
NSNumber *z = [NSNumber numberWithUnsignedInt: 3];
NSArray *numbers = [[NSArray alloc] initWithObjects: w, x, y, z, nil];
Я использую эту категорию для рандомизации массива , а затем:
[numbers shuffledArray];
Затем у меня есть другой набор целых чисел, которые я использую, чтобы получить числа в теоретически перетасовке, и использую их в своих анимационных блоках:
int ww = [[numbers objectAtIndex:0] integerValue];
int xx = [[numbers objectAtIndex:1] integerValue];
int yy = [[numbers objectAtIndex:2] integerValue];
int zz = [[numbers objectAtIndex:3] integerValue];
[UIView animateWithDuration:.85 delay:3 options:opts animations:[animations objectAtIndex:ww] completion:[completions objectAtIndex:ww]];
[UIView animateWithDuration:.85 delay:8 options:opts animations:[animations objectAtIndex:xx] completion:[completions objectAtIndex:xx]];
и т.д.. Причина, по которой я не просто использую "animations: [animations objectAtIndex: [numbers objectAtIndex: 0]], заключается в том, что компилятор генерировал" несовместимый указатель на целочисленное преобразование, отправляющее тип "id" на параметр типа "NSUInteger" (иначе 'unsigned int') "когда я сделал это таким образом, я попытался исправить это, введя оригинальные целые как неподписанные, но не повезло.
Код не дает мне ошибок, и все работает просто отлично, за исключением того, что ничего не рандомизировано; но это в том порядке, в котором я поставил все на первое место. Есть идеи, где я иду не так? Я перепробовал кучу других функций рандомизации, но, похоже, ничего не работает.