我总共有6个布尔值,唯一分开它们的是一个数字。他们被命名为checker0但是5。
所以checker0,checker1,checker2,checker3,checker4和checker5。
所有这些授予或拒绝访问应用程序的某些部分,无论bool是真还是假。
然后我使用随机发生器:
randomQuestionNumber = arc4random_uniform(5);
所以说我们得到3号,checker3 = 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;
}
非常感谢你! :)
答案 0 :(得分:0)
每次当你发现自己处于一个名为三个或更多变量checkerN
的情况时,你很可能知道你错过了一个你应该声明一个数组的代码中的位置。当您需要根据整数索引选择N
之一时,这一点尤为明显。
最好的解决方案是将声明更改为checker[6]
,并使用索引而不是更改名称。如果由于某种原因这是不可能的,你仍然可以创建一个指针数组,并使用它来修改你的值,如下所示:
BOOL *ptrChecker[] = {&checker0, &checker1, &checker2, ...};
...
*ptrChecker[randomQuestionNumber] = true;