2013-02-14 4 views
2

에 따르면 frame.origin.y에 따라 textFields 배열을 정렬하려고합니다. 하지만 시뮬레이터를 실행하면 막혔다. 어떤 아이디어?정렬 IBOutletCollection TextFields 배열 frame.origin.y

IBOutletCollection(UITextField) NSArray *textFields 

내 코드 :이 같은

-(NSMutableArray *)bubbleSort:(NSMutableArray *) unsortedArray{ 
NSInteger i,j; 
//NSLog(@"%@",unsortedArray); 
for(i=0;i<unsortedArray.count;i++) 
    { 
    for(j=0;j<i;j++) 
    { 
     if(((UITextField *)[unsortedArray objectAtIndex:i]).frame.origin.y > ((UITextField *)[unsortedArray objectAtIndex:j]).frame.origin.y) 
     { 

      UITextField *temp=[unsortedArray objectAtIndex:i]; 
      [unsortedArray insertObject:[unsortedArray objectAtIndex:j] atIndex:i]; 
      [unsortedArray insertObject:temp atIndex:j]; 
     } 
    } 
    } 
    //NSLog(@"%@",unsortedArray); 
    return unsortedArray; 
} 
+0

을 쓸 수 있습니까? 디버깅을 시도 했습니까? 예외가 있습니까? 또한 코드에서 변수를 추출하는 것이 좋습니다. 명확성을 높이고 디버그하기 쉽도록 도와줍니다. –

+0

return 문이 실행되지 않습니다. 루프 반복의 몇 후 매달려. 예외 없음. – Harikrishnan

+0

몇 분 후에 잘못된 EXEC가 나타납니다. – Harikrishnan

답변

2

처럼 학습자는 루프에 대한 귀하의 외부를 떠나지 않을 있도록 그냥 배열에 객체를 삽입을 계속했다. 당신이 당신의 if 안에 귀하의 경우 너무

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2 

를 사용할 수 있습니다, 두 요소를 교환하기 위해, 당신은 단순히 그것이 정확히 박히 않습니다

[unsortedArray exchangeObjectAtIndex:i withObjectAtIndex:j]; 

Reference