通过随机发生器选择一个布尔值

Selection a bool through randomizer

我总共有 6 个布尔值,唯一分隔它们的是数字。他们被命名为 checker0 though 5.

所以 checker0、checker1、checker2、checker3、checker4 和 checker5。

无论布尔值是真还是假,所有这些都会授予或拒绝访问应用程序的某些部分。

然后我有一个随机发生器使用:

randomQuestionNumber = arc4random_uniform(5);

假设我们得到了数字 3,checker3 = true;

但我现在的问题是是否可以将这个设置为 true 而不必通过 if 语句。

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

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

所以像这样:

checker%d, randomQuestionNumber = true.

这样的事情可能吗?所以我不必这样做:

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

else if (randomQuestionNumber == 1)
{
    checker1 = true;
}

非常感谢! :)

每当您发现自己处于命名三个或更多变量的情况时 checkerN,您很可能知道您错过了代码中应该声明数组的地方。当您需要根据整数索引选择 N 之一时,这一点变得尤为明显。

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

BOOL *ptrChecker[] = {&checker0, &checker1, &checker2, ...};
...
*ptrChecker[randomQuestionNumber] = true;