2012-04-13 6 views
0

2D 용 NSMutableArray에 for-each 문을 사용하는 방법을 배우고 싶습니다. 내 코드는 아래와 같습니다. for (가장 안쪽) for 문에서 예외가 발생합니다. 예외는 다음과 같습니다 objective-c의 다차원 배열 반복

"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber count]: unrecognized selector sent to instance"

내 코드 :

NSMutableArray* subTryingSet=[NSMutableArray arrayWithArray:[self genSetNumbers:arrRandoms withSize:4]]; 

for (NSMutableArray* oneRow in subTryingSet) { 
    for (NSMutableArray* w in oneRow) { 
     for (int i=0;i<w.count;i++) { 
      NSLog(@"%d", [[w objectAtIndex:i] intValue]); 
     } 
    } 
} 

답변

3

코드에서 첫 번째 빠른보기 후 :

NSLog(@"%d", [[w objectAtIndex:i] intValue]); 

과 :

NSLog(@"%i", [[w objectAtIndex:i] intValue]); 

시도가이를 변경하기

편집

문에 대해 "그것은 제 3 회에서 예외가 발생합니다" "그래서 강타에 갈 수 없어"

은 음 ... 확신하는 oneRow의 모든 개체가있는 NSMutableArray 것을 ?

시도는 다음과 같이 확인 :

+0

가에 갈 수 있도록 그것은, "문은"제 3 회에서 예외가 발생합니다 nslog. – lykant

+0

새로운 답변보기 내 대답 – meronix

+0

ok, you r right meronix. 여기에서 w는 배열이 아닙니다. 왜 genSetNumbers의 메서드가 "subTryingSet"을 1 차원 배열로 반환하는지 살펴 보겠습니다. 고마워요. 나는이 상황에 대해 몇 가지 질문을 다시할지 모른다. :) – lykant

0

당신은 반복이 사용자 정의 목표 다 방법을 사용할 수 있습니다

-(void)loopMultArray:(NSArray*)a walk:(void(^)(id node,int index,int zindex))n{ 

    void(^callback)(id node,int index,int zindex) = Block_copy(n); 

    NSMutableArray *l=[[[NSMutableArray alloc] initWithObjects:a,nil] autorelease]; 
    int c=1; 
    //This first loop will loop until the count var is stable// 
    for(int r=0;r<c;r++){ 
     //This loop will loop thru the child element list// 
     for(int z=0;z<[[l objectAtIndex:r] count];z++){ 

      callback([[l objectAtIndex:r] objectAtIndex:z],z,r); 

      if([[[l objectAtIndex:r] objectAtIndex:z] isKindOfClass:[NSArray class]]){ 
       [l addObject:[[l objectAtIndex:r] objectAtIndex:z]]; 
       c++; 
      }//IF 
     }//FOR 
    }//FOR 

    Block_release(callback); 

}