2012-05-31 34 views

回答

39

使用此代碼:

uint32_t rnd = arc4random_uniform([tips count]); 

NSString *randomObject = [tips objectAtIndex:rnd]; 

編輯: 雖然在我的項目上工作,我決定創建的NSArray一個類別。這很簡單,但我發現它很有用。

以下是文件:

的NSArray + Random.h

#import <Foundation/Foundation.h> 

@interface NSArray (Random) 

- (id)randomObject; 

@end 

的NSArray + Random.m

#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 

然後在當前的例子中,你使用它像這個:

NSString *randomObject = [tips randomObject]; 

使用類別還有另一個優點:當您決定更改在應用程序中選擇隨機對象的方式時,您只需修改randomObject方法。

+7

+1,因爲我剛剛得知arc4random_uniform。謝謝。時間來取代我所有的arc4randoms –

+0

這個解決方案效果很好,謝謝。 – beakr

+0

@MatthiasBauch很高興我能幫到你。您可能想要使用我剛發佈的類別。那麼你的下一次改變將會不那麼痛苦:) – 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; 
} 

希望這有助於