Ios NSMutable array removeAllObject也删除其他NSMutable数组中的对象

Ios NSMutable array removeAllObject也删除其他NSMutable数组中的对象,ios,objective-c,arrays,nsmutablearray,Ios,Objective C,Arrays,Nsmutablearray,我有三门课,即部门视图控制器,部门请求,部门。这就像我从部门视图控制器发出部门请求,并根据响应操作repsonse,并在部门请求类中添加NSmutableArray*responseArray。此数组仅包含Department对象。我希望在部门视图控制器中使用此响应array来搜索和重新加载tableview。因此,我通过委派将此数组传递给部门视图控制器,并将响应数组分配给本地数组。现在我基于这两个数组进行搜索,但是如果我使用removeallobject删除其中任何一个数组。它也正在移除其他数

我有三门课,即部门视图控制器部门请求部门。这就像我从部门视图控制器发出部门请求,并根据响应操作repsonse,并在部门请求类中添加NSmutableArray*responseArray。此数组仅包含Department对象。我希望在部门视图控制器中使用此响应array来搜索和重新加载tableview。因此,我通过委派将此数组传递给部门视图控制器,并将响应数组分配给本地数组。现在我基于这两个数组进行搜索,但是如果我使用removeallobject删除其中任何一个数组。它也正在移除其他数组中的对象

if(searchString.length>0)
  {

      [localArray removeAllObjects];
    for (int i =0 ; i < [departmentRequest.responseArray count]; i++) {
      Department *dept = [departmentRequest.responseArray objectAtIndex:i];

        if (([dept.departmentName rangeOfString:searchString options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)].location != NSNotFound)
          )

        {
                   [localArray addObject:dept];
        }
        else{
            NSLog(@"deptname %@",dept.departmentName);
        }

    }

    [departmentTableView reloadData];
if(searchString.length>0)
{
[localArray removeAllObjects];
对于(int i=0;i<[departmentRequest.responseArray count];i++){
Department*dept=[departmentRequest.responseArray objectAtIndex:i];
if([dept.departmentName rangeOfString:searchString选项:(NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)].location!=NSNotFound)
)
{
[localArray addObject:dept];
}
否则{
NSLog(@“deptname%@”,部门名称);
}
}
[departmentTableView重新加载数据];

如果我删除localArray中的对象,它将同时删除DepartmentRequest.responseArray和localArray中的对象,您应该像这样分配

localArray=[NSArray arrayWithArray:responseArray]


你应该像这样分配

localArray=[NSArray arrayWithArray:responseArray]

如果(searchString.length>0) {

/[localArray removeAllObjects];
NSMUTABLEARRY ARRTEM=[[NSMUTABLEARRY alloc]init];
对于(int i=0;i<[departmentRequest.responseArray count];i++){
Department*dept=[departmentRequest.responseArray objectAtIndex:i];
if([dept.departmentName rangeOfString:searchString选项:(NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)].location!=NSNotFound)
)
{
[arrTemp addObject:dept];
}
否则{
NSLog(@“deptname%@”,部门名称);
}
}
localArray=[NSArray arrayWithArray:arrTemp];
[departmentTableView重新加载数据];
if(searchString.length>0) {

/[localArray removeAllObjects];
NSMUTABLEARRY ARRTEM=[[NSMUTABLEARRY alloc]init];
对于(int i=0;i<[departmentRequest.responseArray count];i++){
Department*dept=[departmentRequest.responseArray objectAtIndex:i];
if([dept.departmentName rangeOfString:searchString选项:(NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)].location!=NSNotFound)
)
{
[arrTemp addObject:dept];
}
否则{
NSLog(@“deptname%@”,部门名称);
}
}
localArray=[NSArray arrayWithArray:arrTemp];
[departmentTableView重新加载数据];

您是否使用localArray=responseArray直接赋值?听起来您好像认为您有两个数组,实际上只有一个。您可能传递的是引用,而不是克隆。您提供的代码不足以确定情况是否如此。您是否使用localArray=responseArray直接赋值?听起来像是e您认为您有两个数组,实际上只有一个。您可能传递的是引用,而不是克隆。您提供的代码不足以确定是否存在这种情况。localArray也是MutableArray,因此我改为[NSMutableArray arrayWithArray:responseArray]。感谢您的帮助:)或localArray=[responseArray mutableCopy]localArray也是MutableArray,所以我改为[NSMutableArray arrayWithArray:responseArray]。感谢您的帮助:)或localArray=[responseArray mutableCopy]
 // [localArray removeAllObjects];

 NSMutableArray arrTemp=[[NSMutableArray alloc]init];

for (int i =0 ; i < [departmentRequest.responseArray count]; i++) {
  Department *dept = [departmentRequest.responseArray objectAtIndex:i];

    if (([dept.departmentName rangeOfString:searchString options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)].location != NSNotFound)
      )

    {
               [arrTemp addObject:dept];
    }
    else{
        NSLog(@"deptname %@",dept.departmentName);
    }

}
localArray = [NSArray arrayWithArray:arrTemp];

[departmentTableView reloadData];