2014-01-03 3 views
0

У меня есть три класса, а именно DepartmentViewController, DepartmentRequest, Департамент. Его как im делает запрос отдела от DepartmentViewcontroller и на основе ответа im манипулирует ответом и добавлением в NSmutableArray * responseArray in DepartmentRequest класс. Этот массив просто содержит объект Department. Я хочу это responseArray в DepartmentViewController для поиска и перезагрузки tableview. поэтому я передал этот массив DepartmentViewController через делегата и назначил responseArray - localArray. Теперь я выполнил поиск на основе этих двух массивов, но если я удалю любой из массива, используя removeallobject. Его удаление объекта в другом массиве тоже.NSMutable массива removeAllObject удаления объектов в другой NSMutable массива слишком

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]; 

если я удалить объект в localArray его удаление объектов как в departmentReqeust.responseArray и localArray

+0

вы непосредственно назначая с помощью localArray = responseArray? – Abhishek

+0

Похоже, вы думаете, что у вас есть два массива, и на самом деле есть только один. Вы, скорее всего, передаете ссылку, а не клон. Код, который вы поставили, недостаточно, чтобы определить, так ли это или нет. – prototypical

ответ

5

Вы должны назначить как

localArray = [NSArray arrayWithArray: responseArray];

+0

localArray также MutableArray, поэтому я был изменен на [NSMutableArray arrayWithArray: responseArray]. спасибо – venky

+0

Рад, что помогло вам :) – Abhishek

+2

или localArray = [responseArray mutableCopy] –

0

если (searchString.length> 0) {

// [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]; 
Смежные вопросы