2012-07-03 3 views
1

Я искал много мест, но не смог найти ответ, поэтому решил задать свой собственный вопрос.Как искать NSMutableArray с помощью UISearchBar?

Я заполняю UITableView данными от JSON. Моя структура данных, как это:

NSMutableArray* studentList = [(NSDictionary*)[responseString JSONValue] objectForKey:@"StudentList"]; 

JSON:

{ 
"StudentList":[ 
    { 
     "StudentID":"08DH11039", 
     "StudentFirstName":"Nguyen Lam", 
     "StudentLastName":"Binhh" 
    }, 
    { 
     "StudentID":"08DH11163", 
     "StudentFirstName":"Nguyen Minh", 
     "StudentLastName":"Duc" 
    }, 
    { 
     "StudentID":"08DH11038", 
     "StudentFirstName":"Nguyen Bao", 
     "StudentLastName":"Khuyen" 
    }, 
    { 
     "StudentID":"08DH11037", 
     "StudentFirstName":"Nguyen Tran Duy", 
     "StudentLastName":"Phuong" 
    } 
    ] 
} 

Добавить данные в UITableView:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
     static NSString *CellIdentifier = @"Cell"; 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     } 
     NSDictionary *student = [studentList objectAtIndex:indexPath.row]; 
     cell.textLabel.text = [NSString stringWithFormat:@"%d. %@ %@", indexPath.row+1, [student objectForKey:@"StudentFirstName"], [student objectForKey:@"StudentLastName"]]; 
     cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:15]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
     return cell; 
    } 

Я также добавить UISearchBar, но это не сработало:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 
{ 
    [searchData removeAllObjects]; 

    NSArray *student; 

    for(student in studentListCopy) //take the n group (eg. group1, group2, group3) 
    { 
     NSLog(@"%@", student); 
     NSMutableArray *newGroup = [[NSMutableArray alloc] init]; 
     NSString *element; 

     for(element in student) 
      NSRange range = [element rangeOfString:searchString 
              options:NSCaseInsensitiveSearch]; 

      if (range.length > 0) { //if the substring match 
       [newGroup addObject:element]; //add the element to group 
      } 
     } 

     if ([newGroup count] > 0) { 
      [searchData addObject:newGroup]; 
     } 
    } 

    return YES; 
} 

Пожалуйста, помогите мне заставить его работать , Я хочу найти FirstName или LastName, которые отображаются в TableView.

Я новичок в программировании на iOS. Большое спасибо.

ответ

0

Я думаю, это будет полезно для понимания того, как NSMutableArray используется с UISearchBar и UITableView. Пример, который я получил из Интернета, - here. Возможно, это поможет вам в решении вашей проблемы.

Смежные вопросы