2015-10-24 48 views
-4

我已經使用Obj.C進行了測驗。我想要做的是使問題以隨機順序出現。我嘗試了很多方法,但到目前爲止我失敗了。如何讓問題以隨機順序出現?

+ (NSArray *) myArray 
{ 
    static NSArray *theArray; 
    if (!theArray) 
    { 
     theArray = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:0], nil]; 
    } 
    return theArray; 
} 

+ (NSArray *) questions { 
    return @[ 
      @{@"question": 
+0

請發表更多代碼。並且不要發佈不完整的代碼。 – anhtu

回答

0

下面是如何生成另一個陣列隨機排列。

NSArray *myArray = @[object1, object2, object3, ..., objectN]; 
NSMutableArray *arrayToTakeItemsFrom = [[NSMutableArray alloc] arrayWithArray:myArray]; 
NSMutableArray *randomOrderedArray = [NSMutableArray new]; 

while (arrayToTakeItemsFrom.count > 0) { 
    int randomIndex = arc4random_uniform(arrayToTakeItemsFrom.count); 
    MyObjectClass *swapObject = [arrayToTakeItemsFrom objectAtIndex:randomIndex]; 
    [arrayToTakeItemsFrom removeObject:swapObject]; 
    [randomOrderedArray addObject:swapObject]; 
} 

//Now randomOrderedArray has everything myArray has in it but in a random order, and always works for any size array including an empty array 
+2

請勿使用arc4random()%x'。使用'arc4random_uniform(x)'。 – rmaddy

+0

獲得'arrayToRakeItemsFrom'的更簡單的方法是執行'= [myArray mutableCopy];'。 – rmaddy

+0

這是兩個優點。我不知道'arc4random_uniform(x)',謝謝你教我新東西!我明確分配一個新的'NSMutableArray'的唯一原因是爲了更容易閱讀。這可能會更長一些,但它更符合大多數新開發人員的理解。 – Fennelouski