我正在创建自定义单元格。
在那里我添加了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'
所以请告诉我原因 提前谢谢。
答案 0 :(得分:2)
只需添加此条件以检查文本字段是否为空(即textfield.text = nil):
if (valueField.text != nil) {
[array1 addObject:valueField.text];
}
else {
[array1 addObject:@""];
}
这将检查textfield是否为空它将添加一个空字符串。如果你不想要那就跳过其他部分。
答案 1 :(得分:2)
默认情况下,UITextField的 text 属性为nil。在将它添加到数组之前将其设置为空字符串,但我认为这不是您要实现的目标。
答案 2 :(得分:2)
UITextField *valueField = [[UITextField alloc] initWithFrame:CGRectMake(165,6, 135, 30)];
valueField.borderStyle = UITextBorderStyleRoundedRect;
valueField.text = @"";
[cell addSubview:valueField];
[array1 addObject:valueField.text];
[valueField release];
以上代码可以正常使用。
答案 3 :(得分:1)
我注意到你说你宣布你的阵列是这样的:
“声明为NSMutableArray * array1;”
在向对象添加对象之前是否已分配数组?
换句话说你做到了吗?
NSMutableArray *array1 = [[NSMutableArray alloc] init];
如果你只做了
NSMutableArray *array1;
这只会声明一个指向NSMutableArray对象的指针。它没有指向NSMutableArray对象的实例。
答案 4 :(得分:0)
当您放置[array1 addObject:valueField.text];
时,您正在向数组中添加一个nil对象,就像您的错误所说的那样。刚刚初始化并分配了valueField时,valueField.text如何等于某事?