2012-10-17 41 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:检查双重条目。