Si tienes un NSMutableArray
, ¿cómo barajas los elementos al azar?
(Tengo mi propia respuesta para esto, que se publica a continuación, pero soy nuevo en Cocoa y estoy interesado en saber si hay una mejor manera).
Actualización: Como señaló @Mukesh, a partir de iOS 10+ y macOS 10.12+, hay un -[NSMutableArray shuffledArray]
método que puede usarse para barajar. Consulte https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc para más detalles. (Pero tenga en cuenta que esto crea una nueva matriz, en lugar de barajar los elementos en su lugar).
for (NSUInteger i = self.count; i > 1; i--) [self exchangeObjectAtIndex:i - 1 withObjectAtIndex:arc4random_uniform((u_int32_t)i)];
API
es que devuelve un nuevo Array
que se dirige a una nueva ubicación en la memoria.