iOS删除表单可变数组异常

时间:2013-12-16 07:52:14

标签: ios nsmutablearray

我正在尝试从我的数组中删除一些东西,但我得到了异常

无法识别的选择器 在删除

我的代码:

NSMutableArray* tempNewsArray = [[NSMutableArray alloc]init];
tempNewsArray = [[defaults objectForKey:@"NewsArray"]mutableCopy];
for(int i = 0;i< [tempNewsArray count]-1;i++)
{
if( (monthIntofNew - month <= 10 && monthIntofNew - month !=0) || ( monthIntofNew - month <= -2))
    {
        [tempNewsArray delete:[tempNewsArray objectAtIndex:i]];//exception occurs here.
        //deleted
    }
}

我想我错过了什么,请帮忙吗?

3 个答案:

答案 0 :(得分:5)

请试试这个,

int indexNum=-1;
NSMutableArray* tempNewsArray = [[NSMutableArray alloc]init];
tempNewsArray = [[defaults objectForKey:@"NewsArray"]mutableCopy];
for(int i = 0;i< [tempNewsArray count]-1;i++)
{
if( (monthIntofNew - month <= 10 && monthIntofNew - month !=0) || ( monthIntofNew - month <= -2))
    {
       indexNum=i;
        //[tempNewsArray delete:[tempNewsArray objectAtIndex:i]];//exception occurs here.
        //deleted
    }
}

if(indexNum!=-1)
{
[tempNewsArray removeObjectAtIndex:indexNum];
}

希望这会对你有所帮助。

答案 1 :(得分:4)

delete:的方法名称不是NSMutableArray,您可能希望使用removeObject:removeObjectAtIndex:

还有其他几个版本的删除:

enter image description here

答案 2 :(得分:0)

我看到异常的两个可能原因(请发布异常):

  1. anoop
  2. 之一
  3. 如果删除用于循环/枚举的数组中的对象,则可以轻松地超出数组的范围。因为条件是基于计数,如果删除对象不再有效