【发布时间】:2013-11-10 11:58:58
【问题描述】:
我正在尝试制作一个测验应用程序,我希望用户单击一个按钮,程序会显示一个随机问题。我尝试使用 arc4random,但它确实重复了这些问题,我想要一个真正随机的方法。所以在这个论坛上有人告诉我使用洗牌方法。我试过了:
-(IBAction)NextQuestion:(id)sender{
NSDictionary * questions = [[NSDictionary alloc] initWithObjectsAndKeys:
@"questionone", Question.text = [NSString stringWithFormat:@"xxxxxxxxxxxxxxxx?"],
Right2.hidden = NO,
Wrong3.hidden = NO,
Wrong1.hidden = NO,
Answer1.text = [NSString stringWithFormat:@"xxxx"],
Answer2.text = [NSString stringWithFormat:@"xxxx"],
Answer3.text = [NSString stringWithFormat:@"xxxx"],
@"questiontwo", Question.text = [NSString stringWithFormat:@"xxxxxxxxxxxxxxxxxxxx?"],
Right1.hidden = NO,
Wrong2hidden = NO,
Wrong3.hidden = NO,
Answer1.text = [NSString stringWithFormat:@"xxxx"],
Answer2.text = [NSString stringWithFormat:@"xxxx"],
Answer3.text = [NSString stringWithFormat:@"xxxx"],
nil];
NSMutableArray *question;
question = [NSMutableArray arrayWithObject:questions];
// shuffle
for (int i = (int)[question count] - 1; i > 0; --i) {
[question exchangeObjectAtIndex: i
withObjectAtIndex: arc4random_uniform((uint32_t)i + 1)];
}
问题是,无论我提出多少问题,只有一个节目(通常是最后一个),所以我做错了什么?有人可以帮我吗?谢谢!!
【问题讨论】:
-
何不做一个专门的类
Question,然后对这个类的对象进行操作。使用NSMutableArray而不是NSDictionary。对数组进行洗牌或排序很容易。NS(Mutable)Dictionary不能被打乱或排序,因为它不是有序的数据结构。 -
True Random Xcode 的可能重复项
-
嘿 zaph 不是重复的,我从那个帖子中学到了,你给了我一个有用的答案,但你没有很好地解释它,否则你会有正确的答案,我不需要创建一个新问题。
标签: ios random nsdictionary shuffle