[NSMutableArray insertObject: atIndex:]: попытка вставить нулевой объект в 0 ' - PullRequest
4 голосов
/ 10 августа 2011

Я создаю собственную ячейку.

В этом я добавил 3 текстовых поля. поэтому я хочу сохранить значения этого текстового поля в nsmutablearray.

когда я пытаюсь этот код

UITextField *valueField = [[UITextField alloc] initWithFrame:CGRectMake(165,6, 135, 30)];
valueField.borderStyle =  UITextBorderStyleRoundedRect;
[cell addSubview:valueField];
[array1 addObject:valueField.text];
[valueField release];

Я получаю ошибку, как это

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'

поэтому, пожалуйста, сообщите мне причину заранее спасибо.

Ответы [ 5 ]

2 голосов
/ 10 августа 2011
UITextField *valueField = [[UITextField alloc] initWithFrame:CGRectMake(165,6, 135, 30)];
valueField.borderStyle =  UITextBorderStyleRoundedRect;
valueField.text = @"";
[cell addSubview:valueField];
[array1 addObject:valueField.text];
[valueField release];

приведенный выше код будет хорошо работать для вас.

2 голосов
/ 10 августа 2011

Просто добавьте это условие, чтобы проверить, является ли текстовое поле пустым (т.е. textfield.text = nil):

if (valueField.text != nil) {
     [array1 addObject:valueField.text];
}
else {
     [array1 addObject:@""];
}

Это проверит, является ли текстовое поле пустым, добавит пустую строку. Если вы не хотите этого, просто пропустите остальную часть.

2 голосов
/ 10 августа 2011

Атрибут text для UITextField по умолчанию равен нулю.Установите ее в пустую строку перед добавлением в массив, хотя я думаю, что это не то, чего вы пытаетесь достичь.

1 голос
/ 10 августа 2011

Я заметил, что вы сказали, что объявили свой массив так:

"объявлено как NSMutableArray * array1;"

Вы выделяете свой массив перед добавлением в него объектов?

Другими словами, вы сделали это?

NSMutableArray *array1 = [[NSMutableArray alloc] init];

Если бы вы только сделали

NSMutableArray *array1;

Это объявит только указатель на объект NSMutableArray. Он не указывает на экземпляр объекта NSMutableArray.

0 голосов
/ 10 августа 2011

Когда вы помещаете [array1 addObject:valueField.text];, вы добавляете объект nil к вашему массиву, как говорится в вашей ошибке.Как valueField.text может быть равен чему-то, когда вы только что инициализировали и присвоили valueField?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...