Странная ошибка в UITableView NSInvalidArgumentException причина: [длина NSNull], когда она не равна нулю
У меня проблема с влюбленностью. Это первое, что я не смог найти решение онлайн. Пожалуйста, помогите, если у вас была такая же проблема раньше. Благодарю.
Сообщение об ошибке:
* Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "-[Длина NSNull]: нераспознанный селектор отправлен на экземпляр 0x3a072a70"
Вот мой код:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UILabel *lblCategoryName;
UILabel *lblGroupName;
if(!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
lblCategoryName = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, 280, 20)];
[lblCategoryName setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:14]];
[lblCategoryName setTag:1];
[cell.contentView addSubview:lblCategoryName];
lblGroupName = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 280, 20)];
[lblGroupName setFont:[UIFont fontWithName:@"HelveticaNeue-Italic" size:10]];
[lblGroupName setTag:2];
[cell.contentView addSubview:lblGroupName];
}
POCategory *category = [self.variantCategories objectAtIndex:indexPath.row];
lblCategoryName = (UILabel*)[cell.contentView viewWithTag:1];
[lblCategoryName setText:category.CategoryName];
lblGroupName = (UILabel*)[cell.contentView viewWithTag:2];
[lblGroupName setText:category.GroupName];
return cell;
}
Странная вещь; Он отлично работает, когда я закомментирую следующие строки ИЛИ, когда мой массив "variable.Categories" пуст. (Я даже могу заполнить табличное представление из других функций) Однако это не сокрушительное в этих строках. И я могу видеть объект во время отладки. Это не пусто. Все выглядит нормально.
//POCategory *category = [self.variantCategories objectAtIndex:indexPath.row];
//lblCategoryName = (UILabel*)[cell.contentView viewWithTag:1];
//[lblCategoryName setText:category.CategoryName];
//lblGroupName = (UILabel*)[cell.contentView viewWithTag:2];
//[lblGroupName setText:category.GroupName];
Массив "variableCategories" определяется следующим образом в моем классе UITableViewController, и это единственная переменная, которую я передаю этому контроллеру представления.
@property (nonatomic, retain) NSArray *variantCategories;
Я пытался сделать его "сильным" вместо "сохранить", но это не сработало.
Любая помощь высоко ценится.
Благодарю.
2 ответа
Сообщение указывает, что length
Метод был вызван для объекта NSNull. Поскольку метод длины, скорее всего, будет вызван на NSString
и комментируя два setText
В строке указаны ваши проблемы, я бы сказал, что GroupName или CategoryName NSNull
, Вы должны убедиться, что эти два свойства определены как сильные для вашего объекта Category.
Можете ли вы проверить этот код, он будет работать:
if (cell == nil) {cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: strIndentifier]; countryLbl = [[UILabel alloc] initWithFrame: CGRectMake (0, 0, CGRectGetWidth (tableView.bounds) / 2, 44)]; countryLbl.textColor = [UIColor blueColor]; countryLbl.textAlignment = NSTextAlignmentLeft; [cell.contentView addSubview: countryLbl]; [countryLbl setTag: 11]; localNoLbl = [[UILabel alloc] initWithFrame: CGRectMake (CGRectGetWidth (tableView.bounds) / 2, 0, CGRectGetWidth (tableView.bounds) / 2, 44)]; localNoLbl.textColor = [UIColor blackColor]; localNoLbl.textAlignment = NSTextAlignmentCenter; [cell.contentView addSubview: localNoLbl]; [localNoLbl setTag: 12];
}
[cell.contentView.subviews enumerateObjectsUsingBlock:^(UIView *obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[UILabel class]]) {
countryLbl = (UILabel *)[cell.contentView viewWithTag:11];
countryLbl.text = [countryLocArray objectAtIndex:indexPath.row];
localNoLbl = (UILabel *)[cell.contentView viewWithTag:12];
localNoLbl.text=[locArray objectAtIndex:indexPath.row];
NSLog(@"%@---%@-%@-%@",locArray,countryLocArray,countryLbl.text,localNoLbl.text);
}
}];