Objective c 通过随机发生器选择布尔

Objective c 通过随机发生器选择布尔,objective-c,random,boolean,Objective C,Random,Boolean,我一共有6个布尔值,唯一能把它们分开的是一个数字。他们的名字叫checker0-5 所以checker0,checker1,checker2,checker3,checker4和checker5 所有这些都允许或拒绝访问应用程序的某些部分,无论bool是真是假 然后我有一个随机化器,使用: randomQuestionNumber = arc4random_uniform(5); 假设我们得到数字3,checker3=true 但我现在的问题是,是否有可能在不必通过if语句的情况下将此设置为t

我一共有6个布尔值,唯一能把它们分开的是一个数字。他们的名字叫checker0-5

所以checker0,checker1,checker2,checker3,checker4和checker5

所有这些都允许或拒绝访问应用程序的某些部分,无论bool是真是假

然后我有一个随机化器,使用:

randomQuestionNumber = arc4random_uniform(5);
假设我们得到数字3,checker3=true

但我现在的问题是,是否有可能在不必通过if语句的情况下将此设置为true

我的想法是实现使用%d打印int表示NSLog的方式

NSLog(@"The number is: %d", randomQuestionNumber);
比如:

checker%d, randomQuestionNumber = true.
这样的事情可能吗?所以我不必这样做:

if (randomQuestionNumber == 0) {
    checker0 = true;
}

else if (randomQuestionNumber == 1)
{
    checker1 = true;
}
BOOL *ptrChecker[] = {&checker0, &checker1, &checker2, ...};
...
*ptrChecker[randomQuestionNumber] = true;

非常感谢!:)

每当您发现自己在命名三个或三个以上变量时,您就很有可能在代码中遗漏了一个应该声明数组的位置。当您需要基于整数索引选择
N
中的一个时,这一点变得尤为明显

最好的解决方案是将声明更改为
checker[6]
,并使用索引而不是更改名称。如果由于某种原因这是不可能的,您仍然可以创建一个指针数组,并使用它修改您的值,如下所示:

if (randomQuestionNumber == 0) {
    checker0 = true;
}

else if (randomQuestionNumber == 1)
{
    checker1 = true;
}
BOOL *ptrChecker[] = {&checker0, &checker1, &checker2, ...};
...
*ptrChecker[randomQuestionNumber] = true;

干杯非常感谢你!非常感谢D