我有一个简单的问卷调查应用程序,它使用tableview。当用户回答问题时,他们可以选择退后一步并更改他们所做的选择。这导致结果中的答案加倍(选择存储在NSmutableArray中)如何逃避在数组中存储“双”结果?
答案 0 :(得分:1)
NSMutableArray *add= [[NSMutableArray alloc]init];
for (Item *item in addList){
if ([add containsObject:item])
{ // Do not add
}
else
[add addObject:item];
}
这里addList是对象列表
答案 1 :(得分:0)
首先,数组应该是NSMutableArray类型,然后检查要插入的对象是否存在
if([yourMutableArray containsObject:valueToBeStored]){
NSLog(@"do not add");
}
else{
[yourMutableArray addObject:valueToBeStored];
}
答案 2 :(得分:0)
只需将NSMutableArray
更改为NSMutableSet
即可。确保您的答案isEqual:
仅考虑正在回答的问题编号。同时实现- (NSUInteger)hash
,但它可能没有。
答案 3 :(得分:0)
我已经假设回过头来,用户可以前进的唯一方法是再次回答问题,选择(答案)按照答案的顺序存储在数组中。
在这种情况下,您需要做的就是每次退回时都删除数组中的最后一个对象。
[selections removeLastObject];
如果你允许它们前后移动会变得有点复杂,但基本上你保持当前索引并在你向后或向前移动时递减或递增它。
然后,当用户选择新答案时,您可以使用此索引替换当前索引处数组中的对象。
[selections replaceObjectAtIndex:currentQuestionIndex withObject:newSelection];
答案 4 :(得分:0)
将您的数组更改为NSMutableSet
,或者,如果您需要排序,请使用NSMutableOrderedSet
。这基本上类似于NSMutableArray
,但使用isEqual:
检查双重条目。
答案 5 :(得分:-1)
在您调用方法的位置使用以下代码...
[yourArray removeAllObjects];
我认为这会对你有所帮助。