随机问答问题?

时间:2011-12-11 14:29:43

标签: iphone random shuffle

我一直在努力解决如何在我的NSarray中改变我的问题。我想让它从NSarray中提出10个问题,其中有50个问题,然后删除它们,这样它们就不会在其他40个问题出现之前再次显示出来。我的NSarray应该是这样的:

{
    NSArray *quizArray = [[NSArray alloc] initWithObjects: 

     @"How much was David Beckham's deal worth upon signing for LA Galaxy?", @"$250m", @"$32.5m", @"$75m", @"$502m", @"3",

     @"In which year did David beckham sign for LA Galaxy?", @"2006", @"2007", @"2008", @"2009", @"2",

     @"In 2008, Rice-Eccles Stadium housed which MLS team for their home games?", @"Toronto FC", @"Real Salt Lake", @"Colorado Rapids", @"Houstion Dynamo", @"2",

     @"Which of these teams, won the first MLS Cup?", @"Chicago Fire", @"Colorado Rapids", @"DC United", @"LA Galaxy", @"3",

     @"Wich of these players have the record for most goals in a game?", @"Mamadou Diallo", @"Marco Etcheverry", @"Cobi Jones", @"Clint Mathis", @"4", nil];

    self.theQuiz = quizArray;
    [quizArray release];
}

我一直在网上搜索差不多2个星期,希望有些人可以帮助我! :)

2 个答案:

答案 0 :(得分:1)

我曾经遇到过同样的问题。 我最终创建了一个名为“MyQuestion”的新类。 它的属性是问题的NSString,不同答案的NSMutableArray和标签的int。

然后你有一个'MyQuestion'的NSMutableArray。对象和洗牌这个数组的方法:

- (NSMutableArray *)shuffleMutableArray:(NSMutableArray *)newMutableArray{

BOOL seeded = NO;
if(!seeded)
{
    srandom(time(NULL));
}

NSUInteger count = [newMutableArray count];
for (NSUInteger i = 0; i < count; ++i) {

    // Select a random element between i and end of array to swap with.
    int nElements = count - i;
    int n = (arc4random() % nElements) + i;
    [newMutableArray exchangeObjectAtIndex:i withObjectAtIndex:n];
}

return newMutableArray;

}

要么对所有对象进行随机播放,要么只有一个NSMutableArray问题,使用Tag属性可以找到属于该问题的答案。 希望这会有所帮助。

答案 1 :(得分:0)

首先,我要创建一个带有问题和几个答案的课程,以及一个正确的答案。

然后,您将拥有两个NSMutableArrays,一个用于未解决的问题,另一个用于询问问题。当询问了一个问题时,你将它从unasked数组中删除并将其添加到询问的数组中。

当unasked数组为空时,您可以移回所有问题或只更改对两个数组的引用。

如果您不想移动个别问题,而是有“问题集”,例如:一组中有10个问题。然后,您可以拥有问题数组的数组,并在添加该组中的所有问题时移动整个组。在这种情况下,顶级数组将是可变的,但是组测定可以是不可变的,因为其中的问题不会改变。