2014-03-05 37 views
-1

当我尝试为UItextfield分配文本时,它使我的应用程序崩溃。 这里是图像: enter image description here信号SIGABRT尝试为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

打开没有。 – damirstuhec

+0

也许你正在为'posCustomer.CCExpire'获得'nil'值。 –

+0

数据类型不匹配或分配 – codercat

回答

2

从您的堆栈跟踪,它看起来好像你正在尝试一个NSDate分配给textField.text它是一个字符串。具体而言,看起来好像CCExpireNSDate而不是NSString

如果是这样,您将需要一个NSDateFormatter将日期转换为字符串。

+0

CCExpire是一个字符串,但是到我的数据库中它是日期时间类型。所以当我从数据库中获取并将其用作字符串时,它就是我应用程序崩溃的原因。一个愚蠢的错误。感谢你的帮助。 – lee

-1

IMO,问题不在于分配文本。 根据显示的日志,您正试图拨打电话[NSDate length](不知道您在哪里打电话,但可能在CCExpire获得)。

请修改该getter方法或在此发布,以便我们可以帮助您更多。

+0

将文本属性设置为标签时,标签需要绘制文本。为了做到这一点,它在其文本属性上调用了一堆方法,包括长度。如果你通过一个NSDate(就像在这个场景中)或者任何其他不是NSString类的类,你会得到一个未知的选择器,在某个点 –

2

看起来像posCustomer.CCExpire是一个NSDate对象。因此,您不能将其用作NSString(UITextField的text属性期望的类)。您应该使用posCustomer.CCExpire.description(一种不好的做法,但它的工作原理),或使用一个NSDateFormatter例如:在异常断点(S),如果你有

txtExpire.text = [NSDateFormatter localizedStringFromDate:posCustomer.CCExpire dateStyle:NSDateFormatterMediumStyle timeStyle:NSDateFormatterNoStyle];

+0

处发送实例异常。 upvote为您的答案。 – lee