Вы заменяете ваш метод cellForRowAtIndexPath
этим.
- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"SubNotificationCell";
SubNotificationCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSDictionary *dict;
if(isFilter) {
// HERE was the problem.
//dict = [[self->searchArray objectAtIndex:indexPath.row] objectForKey:@"Eqktx"];
dict = [self.searchArray objectAtIndex:indexPath.row]
} else {
dict = [self.EtNotifRepTableDataArray objectAtIndex:indexPath.row];
}
NSString* notifValue = [dict objectForKey:@"Qmnum"];
NSString* equipNameValue = [dict objectForKey:@"Eqktx"];
NSString *values = @":";
cell.notifValueLabel.text = [NSString stringWithFormat: @"%@ %@", values, notifValue];
cell.equipNameValueLabel.text = [NSString stringWithFormat: @"%@ %@", values, equipNameValue];
return cell;
}
Проблема в том, что вы выбираете объект непосредственно в части фильтра метода cellForRowAtIndexPath
, который возвращает вам значение NSString, а затем снова ввы пытаетесь получить objectForKey
из этой строки NSString, которая приводит к сбою, поскольку у NSString нет известного метода objectForKey
РЕДАКТИРОВАТЬ:
Это не связано с падением, но вы должны такжеобновите этот метод на основе фильтра.
- (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(isFilter) {
return [searchArray count];
} else {
return [self.EtNotifRepTableDataArray count];
}
}
Попробуйте поделиться своими результатами.