2012-03-30 2 views
1

NSArray의 NSMutableArray가 있습니다. 이것은 내 현재 구조입니다 :NSArray를 포함하는 NSMutableArray에서 객체를 제거합니다.

Paused index (
     (
      0, 
      3579 
     ), 
     (
      1, 
      3538 
     ) 
    ) 

배열을 통해 검색하고 개체 3538을 제거하는 방법은 무엇입니까? 내 예상 결과는 다음과 같습니다.

Paused index (
     (
      0, 
      3579 
     ) 
    ) 

어떻게 외부 배열의 색인을 얻을 수 있습니까? 이미 검색을 수행 할 수 있지만 인덱스에서 해당 오브젝트를 제거하려면 어떻게해야합니까?

+0

검색을 구현하는 방법을 묻는 질문이 있으십니까? – tronbabylove

+0

오해의 소지가있는 질문에 사과드립니다. 개체를 제거하고 싶습니다. 검색을 이미 마쳤습니다. 제거하고 싶습니다. – Diffy

+0

[yourMutableArray removeObjectAtIndex : theIndex]; – tronbabylove

답변

1

이것은 매우 간단합니다.

NSArray *firstArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:100],[NSNumber numberWithInt:1000], nil]; 
NSArray *secondArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:100],[NSNumber numberWithInt:5000], nil]; 

NSMutableArray *arrayWithArray = [NSMutableArray arrayWithObjects:firstArray,secondArray,nil]; 
int i = 0; 

for (NSArray *innerArray in arrayWithArray) 
{ 
    if ([innerArray containsObject:[NSNumber numberWithInt:5000]]) 
    { 
     break; 
    } 
    i++; 

} 
NSLog(@"Index of object %d",i); 
[arrayWithArray removeObjectAtIndex:i]; 

다른 지능형 방법이 있어야합니다.

편집 : 나는 이것이 조금 나아 졌다고 생각합니다.

int i = [arrayWithArray indexOfObjectPassingTest:^BOOL(id element,NSUInteger idx,BOOL *stop) 
    { 
     return [(NSArray *)element containsObject:[NSNumber numberWithInt:5000]]; 
    }]; 

    NSLog(@"Index of object %d",i); 
    if (i >= 0 && i < [arrayWithArray count]) 
    { 
     [arrayWithArray removeObjectAtIndex:i]; 
    } 
+0

아래로 투표하는 이유가 무엇입니까?. – Vignesh

+0

왜 for-in 문과 카운터 i를 한 번에 사용합니까? for (;;) 문이이 상황에 더 적합할까요? 나는 그것이 목적 C에서 어떻게 작동하는지 모르지만 for-in 문은 순서가없는 각 요소를 일반적으로 볼 수 있기 때문에 다른 언어에서는 나쁜 습관이다 – Gargo

+0

? 나는 결코 모른다. 객관적으로 -c에서는 항상 명령을 따른다. 그러나 확인하는 방법은 없다. 너 말이 맞는 것. 고맙습니다. 나는 그것을 명심 할 것이다. – Vignesh

0

이 배열

Array_Paused_index (

(
     0, 
     3579 
    ), 
    (
     1, 
     3538 
    ) 

)를 가지고

하나 개 이상의 어레이를 취

배열 = Array_Paused_index objectAtIndex : 0];

:

결과

배열

(

(

    0, 

    3579 

) 

)

OR SECOND METHOD 될 것이다 Array_Paused_index removeObjectAtIndex : 1];

관련 문제