避免在NSMutableArray中加倍选择

时间:2012-10-17 10:43:34

标签: iphone ios xcode uitableview nsmutablearray

我有一个简单的问卷调查应用程序,它使用tableview。当用户回答问题时,他们可以选择退后一步并更改他们所做的选择。这导致结果中的答案加倍(选择存储在NSmutableArray中)如何逃避在数组中存储“双”结果?

6 个答案:

答案 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];

我认为这会对你有所帮助。