【问题标题】:How do I make the questions appear in random order?如何让问题以随机顺序出现?
【发布时间】:2015-10-24 03:45:46
【问题描述】:

我使用 Obj.C 做了一个测验。我想做的是让问题以随机顺序出现。我尝试了很多方法,但到目前为止都失败了。

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

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

【问题讨论】:

  • 请发布更多代码。并且不要发布不完整的代码。

标签: ios objective-c nsarray


【解决方案1】:

这是我从另一个数组生成随机数组的方法。

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

【讨论】:

  • 不要使用arc4random() % x。使用arc4random_uniform(x)
  • 获取arrayToRakeItemsFrom 的更简单方法是= [myArray mutableCopy];
  • 这两点很好。我不知道arc4random_uniform(x),谢谢你教我一些新东西!我明确分配一个新的NSMutableArray 的唯一原因是让它更易于阅读。可能会更长一些,但更符合大多数新开发者的理解。
猜你喜欢
  • 1970-01-01
  • 2022-07-06
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 2017-12-07
  • 1970-01-01
  • 2022-09-28
相关资源
最近更新 更多