2013-05-10 4 views
1

문자열 배열이 있습니다. 고유 한 값만 유지해야합니다. 나는 모든 반향을 제거하고 싶다. 예 : 배열 인 경우 {문자열 1, 문자열 1, 문자열 1, 문자열 2, string3, string3은} 다음 최종 배열해야한다 {문자열 1, 문자열 2, string3}배열의 고유 값만 보유합니다.

for(int p = 0; p < [allNewsDates count]; p++) 
    { 
     NSLog(@"%@",allNewsDates[p]); 
     for(int q = p+1; q < [allNewsDates count]; q++) 
     { 
      NSLog(@"%@ %@",allNewsDates[p],allNewsDates[q]); 
      if([allNewsDates[p] isEqualToString:allNewsDates[q]]) 
      { 
       flag = YES; 
       t = q; 

       break; 

      } 
     } 
     if(flag) 
     { 
      //[self.date addObject:allDates[p]]; 


      [allNewsDates removeObjectAtIndex:p]; 
      NSLog(@"%i",[allNewsDates count]); 
     } 

     NSLog(@"%i",p); 
     flag = NO; 
    } 

나는 독특한 날짜를 추출하기 위의 절차에 따라 해요 모든 날짜의 배열로부터. 정상적으로 정상적으로 작동합니다. 그러나 문제는 이것입니다. 뉴스 피드를 보여주는 뉴스보기 컨트롤러가 있습니다. 사용자가 뉴스를 선택하면 즐겨 찾기에 추가됩니다. 한 번에 모든 뉴스 항목을 선택하면 즐겨 찾기 테이블에 날짜별로 뉴스가 표시됩니다 (다른 날짜는 5 월 9 일과 10 일에 한 번 나타납니다). 그러나 뉴스를 추가하면 즐겨 찾기로 이동 한 다음 뉴스를보고 몇 가지 뉴스 항목을 클릭하면 (5 월 10 일) 5 월 10 일에 두 번 나옵니다. 내가 어디로 잘못 가고 있니? 도와주세요!!

+1

는 NSSet에 값을 추가 : 여기

NSArray* uniqueDates = [allNewDates valueForKeyPath:@"@distinctUnionOfObjects.self"] 

자세한 내용을 그런 다음 다시 복사하십시오. 세트는 중복을 허용하지 않습니다. –

+0

답장을 보내 주신 모든 분들께 감사드립니다 .. –

답변

6

가 NSSet에 배열을 추가, 그것은

NSSet *mySet = [[NSSet alloc] initWithArray:allNewsDates]; 
NSArray *filteredArray = [mySet allObjects]; 
+1

왜 변할 수 있습니까? 배열에 값을 다시 복사하는 방법을 보여 주면 내 최대 투표를 할 수 있습니다. –

+0

나는 세트에 더 많은 문자열을 추가 할 예정이라면 변경 가능한 부분을 넣는다. 유용 할 것이다. :) 어쨌든 Thankz –

+0

완전히 'distinctUnionOfObjects.self'보다 더 감사합니다 –

3
NSSet *uniqueStates = [NSSet setWithArray:yourArray]; 
NSArray *arr = [uniqueStates allObjects]; 
0

여기 당신을 위해 작동합니다 NSMutable Array..it에서 중복 값을 제거하는 코드입니다 이잖아. 에서 myArray 당신이 중복 값을 제거하려는 변경 가능한 배열을 ..입니다

for(int j = 0; j < [myArray count]; j++){ 
    for(int k = j+1;k < [myArray count];k++){ 
     NSString *str1 = [myArray objectAtIndex:j]; 
     NSString *str2 = [myArray objectAtIndex:k]; 
     if([str1 isEqualToString:str2]) 
      [myArray removeObjectAtIndex:k]; 
     } 
} 

또는 당신은 사용할 수 있습니다 : 그것은의 (정렬되지 않은) 모음입니다 :

NSSet은 당신이해야 할 노력하고 정확하게 수행 고유 항목. 그래서, 당신은 다음처럼 배열에서 고유 항목을 찾을 수 있습니다

NSSet *uniqueElements = [NSSet setWithArray:myArray]; 
// iterate over the unique items 
for(id element in uniqueElements) { 
    // do something 
}