SORU
11 EYLÜL 2008, PERŞEMBE


'Karıştırmak için en İyi Yolu ne bir NSMutableArray?

Eğer varsa bir NSMutableArray nasıl öğeleri rasgele shuffle mı?

(Aşağıda yayınlanmıştır bu benim cevabım evet, ama Kakao yeniyim ve eğer daha iyi bir yolu olup olmadığını merak ediyorum.)

CEVAP
11 EYLÜL 2008, PERŞEMBE


NSMutableArray için bir kategori ekleyerek çözdüm.

Düzenleme:Kaldırılan gereksiz yöntem Ladd tarafından yanıt için teşekkürler.

Düzenleme:(arc4random() % nElements) arc4random_uniform(nElements) cevap için teşekkürler miho ve blahdiblah tarafından Gregory Goltsov ve yorum değişti

Düzenleme:Döngü iyileştirme, Ron yorum için teşekkürler

//  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
{
    NSUInteger count = [self count];
    for (NSUInteger i = 0; i < count - 1;   i) {
        NSInteger remainingCount = count - i;
        NSInteger exchangeIndex = i   arc4random_uniform((u_int32_t )remainingCount);
        [self exchangeObjectAtIndex:i withObjectAtIndex:exchangeIndex];
    }
}

@end

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DigitalRev TV

    DigitalRev T

    30 AĞUSTOS 2007
  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • super1988guy

    super1988guy

    9 Aralık 2007