2012-05-31 10 views

Antwort

39

Mit diesem Code:

uint32_t rnd = arc4random_uniform([tips count]); 

NSString *randomObject = [tips objectAtIndex:rnd]; 

EDIT: Während auf meinem Projekt arbeiten ich beschlossen, eine Kategorie für NSArray zu erstellen. Es ist sehr einfach, aber ich fand es nützlich.

Hier sind die Dateien:

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 

Dann im aktuellen Beispiel verwenden Sie es wie dies:

NSString *randomObject = [tips randomObject]; 

Die Verwendung der Kategorie hat noch einen weiteren Vorteil: Wenn Sie Ihre Methode zum Auswählen zufälliger Objekte in Ihrer App ändern, ändern Sie einfach die Methode randomObject.

+7

+1, weil ich über arc4random_uniform gerade gelernt. Vielen Dank. Zeit, alle meine arc4randoms zu ersetzen –

+0

Diese Lösung hat super funktioniert, danke. – beakr

+0

@MatthiasBauch Ich bin froh, dass ich helfen konnte. Vielleicht möchten Sie die Kategorie verwenden, die ich gerade gepostet habe. Dann wird deine nächste Änderung weniger schmerzhaft sein :) – 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; 
} 

hoffe, das hilft

Verwandte Themen