从包含NSArray的NSMutableArray中删除对象

时间:2012-03-30 05:03:26

标签: iphone objective-c ios nsmutablearray

我有一个NSArray的NSMutableArray。这是我目前的结构:

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

如何搜索数组并删除对象3538?我的预期结果是:

    Paused index (
       (
          0,
          3579
       )
    )

如何获取外部数组的索引?我已经可以进行搜索但是如何删除该索引中的对象?

2 个答案:

答案 0 :(得分: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];
    }

答案 1 :(得分:0)

你有这个数组

Array_Paused_index (

   (
      0,
      3579
   ),
   (
      1,
      3538
   )

再拿一个数组

Array = [Array_Paused_index objectAtIndex:0];

结果将是

阵列

 (

   0,

   3579

 )

或第二种方法:

[Array_Paused_index removeObjectAtIndex:1];