Странная ошибка в 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);
    }
    }];
Другие вопросы по тегам