Перемешивание массива в objective-c Возможный дубликат: Каков наилучший способ перетащить NSMutableArray? Я разрабатываю приложения для iphone/iPad. Я хочу перетасовать объекты, хранящиеся в NSArray. Есть ли способ достичь этого с помощью objective-c? Ответ 1 Добавить категорию в NSMutableArray с кодом, предоставленным Кристоном Джонсоном - // NSMutableArray_Shuffling.h #if TARGET_OS_IPHONE #import <UIKit/UIKit.h> #else #include <Cocoa/Cocoa.h> #endif // This category enhances NSMutableArray by providing // methods to randomly shuffle the elements. @interface NSMutableArray (Shuffling) - (void)shuffle; @end // NSMutableArray_Shuffling.m #import "NSMutableArray_Shuffling.h" @implementation NSMutableArray (Shuffling) - (void)shuffle { static BOOL seeded = NO; if(!seeded) { seeded = YES; srandom(time(NULL)); } NSUInteger count = [self count]; for (NSUInteger i = 0; i < count; ++i) { // Select a random element between i and end of array to swap with. int nElements = count - i; int n = (random() % nElements) + i; [self exchangeObjectAtIndex:i withObjectAtIndex:n]; } } @end Ответ 2 Посмотрите, помогает ли этот пример. Вы также можете увидеть этот предыдущий SO-вопрос канонический способ рандомизации NSArray в Objective C
Ответ 1 Добавить категорию в NSMutableArray с кодом, предоставленным Кристоном Джонсоном - // NSMutableArray_Shuffling.h #if TARGET_OS_IPHONE #import <UIKit/UIKit.h> #else #include <Cocoa/Cocoa.h> #endif // This category enhances NSMutableArray by providing // methods to randomly shuffle the elements. @interface NSMutableArray (Shuffling) - (void)shuffle; @end // NSMutableArray_Shuffling.m #import "NSMutableArray_Shuffling.h" @implementation NSMutableArray (Shuffling) - (void)shuffle { static BOOL seeded = NO; if(!seeded) { seeded = YES; srandom(time(NULL)); } NSUInteger count = [self count]; for (NSUInteger i = 0; i < count; ++i) { // Select a random element between i and end of array to swap with. int nElements = count - i; int n = (random() % nElements) + i; [self exchangeObjectAtIndex:i withObjectAtIndex:n]; } } @end
Ответ 2 Посмотрите, помогает ли этот пример. Вы также можете увидеть этот предыдущий SO-вопрос канонический способ рандомизации NSArray в Objective C