signal SIGABRT尝试为uitextfield分配文本时出错

时间:2014-03-05 11:12:56

标签: ios iphone objective-c ios7

当我尝试为UItextfield分配文本时,它会让我的应用程序崩溃。 这是图像: enter image description here

但是当我对代码行发表评论时: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;
         }
     }
}

3 个答案:

答案 0 :(得分:2)

从堆栈跟踪中,您看起来好像在尝试将NSDate分配给textField.text这是一个字符串。具体来说,看起来好像CCExpireNSDate而不是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方法或在此发布,以便我们为您提供更多帮助。