我制作了一个笑话应用程序,用户生成一个笑话,笑话将显示在UILabel中。然而,我试图随机化笑话节目,但我不想两次显示相同的笑话。请问你能告诉我怎么做到这一点。我正在使用下面的代码尝试这样做,但它似乎无法正常工作。
- (IBAction)generateNewJoke {
if (i < [jokeArray count]) {
i++;
[userDefaults setInteger:[userDefaults integerForKey:kNewIndex] forKey:kOldIndex];
int oldnumber = [userDefaults integerForKey:kOldIndex];
int newnumber = [userDefaults integerForKey:kNewIndex];
[answerLabel setText:@""];
[userDefaults setInteger:i forKey:kNewIndex];
if (oldnumber == newnumber) {
NSLog(@"they are the same");
[userDefaults setInteger:arc4random()%[jokeArray count] forKey:kNewIndex];
}
[jokeLabel setText:[jokeArray objectAtIndex:[userDefaults integerForKey:kNewIndex]]];
}
}
答案 0 :(得分:6)
你可以将所有的笑话放在一个数组中,shuffle数组,然后按顺序遍历数组。由于之前被洗牌,所有的笑话都会有所不同。当你到达数组的末尾时,从头开始(甚至重新洗牌)。