2012-10-17 57 views
0

我有一個使用tableview的簡單調查問卷應用程序。當用戶回答問題時,他們可以選擇退後一步並更改他們所做的選擇。這會導致結果翻倍(選擇存儲在NSmutableArray中)如何轉義在數組中存儲「double」結果?避免在NSMutbleArray中加倍選擇

回答

1
NSMutableArray *add= [[NSMutableArray alloc]init]; 

for (Item *item in addList){ 
     if ([add containsObject:item]) 
     { // Do not add 
     } 
     else 
      [add addObject:item]; 
} 

這裏addList是對象

-1

使用以下在你打電話給你方法的代碼......

[yourArray removeAllObjects]; 

我認爲這將是對你有所幫助。

+0

這將只從數組中刪除對象。我試圖防止加倍結果。 –

+0

您可以在填寫yourArray之前寫下它。那麼你只能得到單個值。 –

0

第一陣列應該是NSMutableArray的類型,然後檢查是否要插入的對象的存在與否

if([yourMutableArray containsObject:valueToBeStored]){ 
NSLog(@"do not add"); 

} 
else{ 
[yourMutableArray addObject:valueToBeStored]; 
} 
0

的名單只是改變你的NSMutableArrayNSMutableSet。確保你的回答isEqual:只考慮正在回答的問題編號。也執行- (NSUInteger)hash,但它可能沒有。

0

我已經做出了這樣的假設,即用戶可以繼續前進的唯一方法是再次回答問題,並且選擇(答案)以他們被回答的順序存儲在數組中。

在這種情況下,您只需要在每次退後時刪除數組中的最後一個對象。

[selections removeLastObject]; 

它變得有點複雜,如果你讓他們向後和向前移動,但基本上是你持有到當前指數和遞減或遞增它,你分別向前或向後。

然後,您可以使用此索引在用戶選擇新答案時用當前索引替換數組中的對象。

[selections replaceObjectAtIndex:currentQuestionIndex withObject:newSelection]; 
0

您的陣列更改爲NSMutableSet或者,如果需要排序,使用NSMutableOrderedSet。這基本上像NSMutableArray的行爲,但與isEqual:檢查雙重條目。