2012-10-17 7 views
0

테이블 뷰를 사용하는 간단한 설문지 앱이 있습니다. 사용자가 질문에 답하면 뒤로 물러나 선택 사항을 변경할 수 있습니다. 이로 인해 결과에서 중복 된 결과가 나타납니다 (선택 항목은 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]; 

나는 당신에게 도움이 될 것이라 생각합니다. 개체가 그냥 NSMutableArray A를 변경

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

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

그러면 배열에서 개체가 제거됩니다. 나는 두 배의 결과를 막으려 고하고있다. –

+0

yourArray를 채우기 전에이 코드를 작성할 수 있습니다. 그런 다음 하나의 값만 얻을 수 있습니다. –

0

먼저 배열은 확인 NSMutableArray를 형식이어야합니다 NSMutableSet. 대답의 isEqual:이 응답되는 질문 번호 만 고려하는지 확인하십시오. - (NSUInteger)hash도 구현하되 작동하지 않을 수도 있습니다.

0

의 목록입니다 삽입 존재 여부 될 경우

0

나는 돌아가서 사용자가 앞으로 나아갈 수있는 유일한 방법은 질문에 다시 답하는 것이며 선택 사항 (답변)은 답변 된 순서대로 배열에 저장된다는 것입니다.

이 경우, 뒤로 물러 설 때마다 배열의 마지막 객체를 제거하면됩니다.

[selections removeLastObject]; 

당신이 그 (것)들을 앞뒤로 이동할 수 있도록하는 경우는 조금 더 복잡해진다 있지만, 기본적으로는 현재의 인덱스 및 감소에 개최하거나 각각 앞뒤로 이동하거나로 증가.

그러면 사용자가 새 대답을 선택할 때이 색인을 사용하여 현재 색인의 배열에있는 객체를 바꿉니다.

[selections replaceObjectAtIndex:currentQuestionIndex withObject:newSelection]; 
0
는 정렬을 필요로하는 경우, NSMutableOrderedSet을 사용합니다 NSMutableSet에 배열을 변경하거나

. 이것은 기본적으로 NSMutableArray처럼 동작하지만 isEqual:으로 이중 항목을 확인합니다.