2011-12-11 74 views
2

我一直在努力解決如何在我的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周,希望能幫助我一些! :)

+0

我建議將它們分組在一起,而不是將問題和答案添加到同一個數組中。 –

+0

@jakob Pipenbring:你有沒有得到解決方案,如果你得到請分享示例項目 –

回答

0

首先,我會創建一個有問題和幾個答案的類,並且一個答案是正確的。

然後,您將有兩個NSMutableArrays,一個用於未受請求問題,一個用於問題。當一個問題被詢問時,你將它從未被詢問的數組中移除並將其添加到被詢問的數組中。

當未詢問的數組爲空時,您可以將所有問題移回或僅更改對兩個數組的引用。

如果您不想移動個別問題,而是有「套」問題,例如一組10個問題。然後,您可以添加一系列問題陣列,並在添加該組中的所有問題時移動整個組。在這種情況下,頂層陣列將是可變的,但組羣化驗可能是不可改變的,因爲其內的問題不會改變。

+0

對不起,作爲一個noob,但你可以做一個教程,或一個示例項目應該是什麼樣子。當我添加類到我的項目沒有NSMutableArrays .. :( – JMIT

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屬性,你可以找到關於屬於該問題的答案。 希望這有助於。

+0

對不起,作爲一個noob,但你可以做一個教程,或一個示例項目,應該是什麼樣子當我添加到我的項目類有沒有NSMutableArrays .. :( – JMIT

+0

當然沒有NSMutableArrays 你必須手動創建它們... 也許你應該看看[這裏](http://stackoverflow.com/questions/3231351/adding-objects -to-A-NSMutableArray的屬性) – pmk