2012-05-31 32 views

cevap

39

kullanın bu kod:

uint32_t rnd = arc4random_uniform([tips count]); 

NSString *randomObject = [tips objectAtIndex:rnd]; 

DÜZENLEME: benim proje üzerinde çalışıyoruz i NSArray için bir kategori oluşturmaya karar ederken. Çok basit ama yararlı buldum. İşte

dosyalar şunlardır: Random.h

#import <Foundation/Foundation.h> 

@interface NSArray (Random) 

- (id)randomObject; 

@end 

NSArray + Random.m

NSArray +

#import "NSArray+Random.h" 

@implementation NSArray (Random) 

-(id)randomObject { 
    NSUInteger myCount = [self count]; 
    if (myCount) 
     return [self objectAtIndex:arc4random_uniform(myCount)]; 
    else 
     return nil; 
} 

@end 

Sonra şimdiki örnekte aşağıdaki gibi kullanabilirsiniz bu:

NSString *randomObject = [tips randomObject]; 

Kategoriyi kullanma başka bir avantajı da vardır: uygulamanızda rastgele nesneler seçme şeklinizi değiştirmeye karar verdiğinizde, randomObject yöntemini değiştirirsiniz. Sadece arc4random_uniform öğrendim çünkü

+7

+1 yardımcı olur. Teşekkür ederim. Bütün zamanlar benim arc4randoms değiştir –

+0

Bu çözüm, harika çalıştı. – beakr

+0

@MatthiasBauch Yardımcı olabileceğime sevindim. Gönderdiğim kategoriyi kullanmak isteyebilirsiniz. O zaman bir sonraki değişiminiz daha az acı çekecektir :) – Adam

4
NSUInteger i = arc4random(); 
NSString *string = [tips objectAtIndex: i]; 

-(NSString *) returnArrayItem: (NSArray *) array { 
    //Sets randNum equal to a random number between 0 and the number of elements in the array parameter 
    NSUInteger randNum = arc4random() % [array count]; 
    //Sets the string returnValue to a random string in the array 
    NSString *returnValue = [array objectAtIndex:randNum]; 
    //Returns array 
    return returnValue; 
} 

Umut bu