当我尝试为UItextfield分配文本时,它会让我的应用程序崩溃。 这是图像:
但是当我对代码行发表评论时:txtExpire.text = posCustomer.CCExpire;
和txtExpire.text = posSupplier.CCExpire;
我的应用可行。请帮我找出根本原因。
这是我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
@synchronized (self){
if (posCustomer) {
txtAccountLimit.text = [NSString stringWithFormat:@"%d",[posCustomer.AccountLimit intValue]];
txtBSB.text = posCustomer.BankBSB;
txtAccount.text = posCustomer.BankAccount;
txtNotes.text = posCustomer.BankNotes;
txtCreditCardNo.text = posCustomer.CCNumber;
txtNameOnCard.text = posCustomer.CCName;
txtExpire.text = posCustomer.CCExpire;
}else if (posSupplier){
txtAccountLimit.text = [NSString stringWithFormat:@"%d",[posSupplier.AccountLimit intValue]];
txtBSB.text = posSupplier.BankBSB;
txtAccount.text = posSupplier.BankAccount;
txtNotes.text = posSupplier.BankNotes;
txtCreditCardNo.text = posSupplier.CCNumber;
txtNameOnCard.text = posSupplier.CCName;
txtExpire.text = posSupplier.CCExpire;
}
}
}
答案 0 :(得分:2)
从堆栈跟踪中,您看起来好像在尝试将NSDate
分配给textField.text
这是一个字符串。具体来说,看起来好像CCExpire
是NSDate
而不是NSString
。
如果是这种情况,您需要NSDateFormatter将日期转换为字符串。
答案 1 :(得分:2)
看起来像posCustomer.CCExpire是一个NSDate对象。因此,您不能将它用作NSString(UITextField的text属性所期望的类)。您应该使用posCustomer.CCExpire.description(一种不好的做法,但它可以工作)或使用NSDateFormatter例如:
txtExpire.text = [NSDateFormatter localizedStringFromDate:posCustomer.CCExpire dateStyle:NSDateFormatterMediumStyle timeStyle:NSDateFormatterNoStyle];
答案 2 :(得分:-1)
IMO,问题不在于分配文本。
根据显示的日志,您尝试拨打[NSDate length]
(不确定您在哪里调用它,但可能在CCExpire
getter中)。
请修改getter方法或在此发布,以便我们为您提供更多帮助。