2013-08-05 3 views
0

내 배열 unique이 내 주 배열이고 배열이 kind입니다. 배열 uniquekind의 값이 하나만 있는지 확인해야합니다. 그런 다음 배열 kind에 1 개 이상의 값이있는 경우 unique에 배열에서 사용 된 첫 번째 값이 아닌 모든 값의 설정을 해제해야합니다.NSArray에 다른 배열의 값이 있는지 확인하는 방법

추가로이 코드는 다음과 같지만 발견 된 개체의 indexpath을 나중에 비교할 수 없습니다. xcode는 "bad receiver type nsinteger"

누구든지 이것을 달성 할 수 있을까요?

kind = @[@"#Routine",@"#Exercise",@"#Username"]; 
    NSMutableArray *uniqueKind = [NSMutableArray array]; 
    for (NSString* obj in kind) { 
     if ([unique containsObject:obj]) { 
      NSInteger i = [unique indexOfObject:obj]; 
      [uniqueKind addObject: [i intValue]]; 
     } 
    } 
+0

코드가 귀하의 설명에 나온 것처럼 보이지 않습니다. 3 개의 문자열이 모두'unique'에 존재한다면, 여러분은'uniqueKind'에 3 개의 모든 색인을 추가 할 것입니다. 당신은 '고유'에 _each_ 문자열 중 하나 이상을 원하지 않는다는 것을 의미합니까? –

답변

4

NSInteger (편집)

int 같다, 그래서 당신은 그에게 메시지 ([i intValue])를 보낼 수 없습니다. 또한 배열에 NSInteger을 추가하지 않고 NSNumber 또는 다른 객체 유형으로 만들 수 없습니다. 당신은 이런 식으로 작업을 수행 할 수 있습니다

또한
NSInteger i = [unique indexOfObject:obj]; 
[uniqueKind addObject: [NSNumber numberWithInteger:i]]; 

당신이 배열 대신 NSSet을 사용할 수 있습니다 (당신이 무슨 일을하는지 이해하지 않고). 배열 대신

NSUInteger i = [unique indexOfObject:obj]; 
if (i != NSNotFound) { 
    [uniqueKind addObject:[NSNumber numberWithInteger:i]]; 
} 
+0

@JoshCaswell 나쁜 복사 붙여 넣기. 그것을 잡아 주셔서 감사합니다. 나는 당신이'containsObject :'호출을 할 필요가 없다는 것을 보여주었습니다, 왜냐하면'indexOfObject :'는 그것이 배열에 있는지 알려줄 것입니다. –

0

실제 intValue가 아닌 NSMutableArray에 객체를 추가해야합니다. 먼저 정수를 NSNumber로 변환 해보십시오. 대신

[uniqueKind addObject: [NSNumber numberWithInt:i]];

.

+0

죄송합니다. - 나쁘다 - numberWithInt : i와 함께 NSNumber로 변환 해보십시오. –

2

나는 그것이 문제를 해결할 것인지 모르겠지만, 당신은 세트 (또는 변경 가능한 변화)를 사용하여 고려가 : 그리고 당신은 통화의 몇 가지를 결합 할 수 있습니다? 고유성을 보장하며 교차로/봉쇄를 확인할 수 있습니다. NSSet class reference을 참조하십시오.

관련 문제