Iphone [NSMutableArray insertObject:atIndex:]:尝试在0';

Iphone [NSMutableArray insertObject:atIndex:]:尝试在0';,iphone,nsmutablearray,Iphone,Nsmutablearray,我正在创建自定义单元格 在这一部分中,我添加了3个文本字段。所以我想把这个textfield值存储到nsmutablearray中 当我尝试这个代码时 UITextField *valueField = [[UITextField alloc] initWithFrame:CGRectMake(165,6, 135, 30)]; valueField.borderStyle = UITextBorderStyleRoundedRect; [cell addSubview:valueField]

我正在创建自定义单元格

在这一部分中,我添加了3个文本字段。所以我想把这个textfield值存储到nsmutablearray中

当我尝试这个代码时

UITextField *valueField = [[UITextField alloc] initWithFrame:CGRectMake(165,6, 135, 30)];
valueField.borderStyle =  UITextBorderStyleRoundedRect;
[cell addSubview:valueField];
[array1 addObject:valueField.text];
[valueField release];
我犯了这样的错误

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'***-[NSMutableArray insertObject:atIndex:]:尝试在0'处插入nil对象。

所以请告诉我原因
提前感谢。

当您放入
[array1 addObject:valueField.text],您正在向数组中添加一个nil对象,正如错误所述。当您刚刚初始化并分配valueField时,valueField.text如何等于某个值?

只需添加此条件以检查textfield是否为空(即textfield.text=nil):

这将检查textfield是否为空。它将添加一个空字符串。如果您不想这样做,只需跳过else部分。

默认情况下,UITextField的text属性为nil。在将其添加到数组之前,将其设置为空字符串,尽管我认为这不是您想要实现的目标

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

上面的代码对您来说很好。

我注意到您说过您这样声明了数组:

“声明为类似NSMUTABLEARRY*array1;”

在向数组添加对象之前,是否已分配数组

换句话说,你做过这件事吗

NSMutableArray *array1 = [[NSMutableArray alloc] init];
如果你这么做了

NSMutableArray *array1;

这将只声明指向NSMutableArray对象的指针。它不指向NSMutableArray对象的实例。

什么是array1以及它是如何声明的?array1是NSMutableArray的对象。并声明为与NSMutableArray*array1类似;为什么你要添加一个新创建的文本字段的文本,当你知道里面什么都没有…嗨,rajesh,这段代码工作得很好。我听不懂你在说什么,你能告诉我吗。textfield值无法在数组中存储problem@Ram在将值存储到数组之前,需要设置textField文本,例如:valueField.text=@“hai”;然后尝试将值添加到数组中,就可以了。@Ram您可以通过单击勾选按钮来接受这个答案,这很有帮助。请告诉我。textfield值无法存储在数组中问题是什么您应该将这些值存储在此代理回调中
textfielddidediting:
当我将代码插入代理方法时,它只显示最后一个字段值请研究文档中的代理回调,并发布一个新问题解释您的操作want@xs2bush让我们
NSMutableArray *array1;