2012-03-30 57 views
1

我在它內部有一個NSArray的NSMutableArray。這是我當前的結構:從包含NSArray的NSMutableArray中移除對象

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

如何搜索數組並刪除對象3538?我的預期結果是:

Paused index (
     (
      0, 
      3579 
     ) 
    ) 

如何獲得外部數組的索引?我已經可以進行搜索,但是如何刪除該索引中的對象?

+0

你在問如何實現搜索? – tronbabylove 2012-03-30 05:11:56

+0

抱歉有誤導性的問題。我想刪除該對象,現在我已經做了搜索,現在我想刪除它。 – Diffy 2012-03-30 05:17:32

+0

[yourMutableArray removeObjectAtIndex:theIndex]; – tronbabylove 2012-03-30 05:20:22

回答

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 2012-03-30 06:44:13

+0

你爲什麼一次使用原來的陳述和計數器?對於(;;)語句更適合這種情況?我不知道它是如何在Objective-C中工作的,但是在其他語言中它是一種不好的做法,因爲for-in語句可能會查看每個元素,而一般沒有訂單 – Gargo 2012-03-30 06:49:20

+0

是嗎?我從來都不知道。在Objective-C中,它始終遵循順序。儘管如此,仍然無法確認。你有什麼道理。謝謝。我會牢記這一點。 – Vignesh 2012-03-30 06:54:34

0

如你有這樣的陣列

Array_Paused_index (

(
     0, 
     3579 
    ), 
    (
     1, 
     3538 
    ) 

需要多一個陣列

陣列= [Array_Paused_index objectAtIndex:0];

結果將是

陣列

(

    0, 

    3579 

) 

OR第二種方法:

[Array_Paused_index removeObjectAtIndex:1];

相關問題