Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSDate使ViewWillAspect()和ViewDidAspect()之间的应用程序崩溃_Ios_Swift_Nsdate_Viewwillappear_Viewdidappear - Fatal编程技术网

Ios NSDate使ViewWillAspect()和ViewDidAspect()之间的应用程序崩溃

Ios NSDate使ViewWillAspect()和ViewDidAspect()之间的应用程序崩溃,ios,swift,nsdate,viewwillappear,viewdidappear,Ios,Swift,Nsdate,Viewwillappear,Viewdidappear,我正在用Swift语言为iOS开发一个应用程序,该应用程序会出现一条非常模糊的错误消息 首先是一个小上下文:我有一个自定义类Order,是NSManagedObject的子类,我使用CoreData进行数据存储订单有很多字段,但其中两个字段是交货日期和cCommissionDate 我有一个带有四个选项卡的TabController,用于显示所有订单信息。在第一个选项卡中,有许多TextFields,其中两个是deliveryDateText和cCommissionDateText。这两者完全相

我正在用Swift语言为iOS开发一个应用程序,该应用程序会出现一条非常模糊的错误消息

首先是一个小上下文:我有一个自定义类
Order
,是
NSManagedObject
的子类,我使用CoreData进行数据存储<代码>订单有很多字段,但其中两个字段是
交货日期
cCommissionDate

我有一个带有四个选项卡的TabController,用于显示所有订单信息。在第一个选项卡中,有许多
TextField
s,其中两个是
deliveryDateText
cCommissionDateText
。这两者完全相同

好的,我在选项卡的
视图中将出现
方法上填充这些字段:

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
if let controller = self.parentViewController as? OrderDetailTabBarController {

            let order = getOrder()!

            [...]

            fillText(orderDateText,       order.date)
            fillText(deliveryDateText,    order.deliveryDate)
            fillText(cCommissionDateText, order.copyCommissionDate)
            fillText(sealDateText,        order.sealDate)
            fillText(pricelistText,       order.priceGroup)

[...]
}
其中fillText()是:

当我启动应用程序并转到该选项卡时,ViewWillDisplay将被完全计算:deliveryDate和cCommissionDate都不是零(它们都是6月6日,但它们是两个不同的实例),但在ViewWillDisplay之后和ViewDidDisplay之前,应用程序崩溃在AppDelegate的声明

它只表示
EXC\u BAD\u访问代码1
,并表示启用NSZombies
[\uu NSDate release]:消息发送到解除分配的实例0x7fc0c8a0

有很多奇怪的事情:当应用程序崩溃时,我可以看到emulator上的最后一个视图,那就是编译的选项卡。它是按照每个日期编制的,包括交付日期和交付日期,6月6日。但是,调试器无法访问ViewDidDisplay

如果我对
fillText(cCommissionDateText,order.copyccommissionDate)
行进行注释,一切正常

我只在touch listener的文本字段中触碰了cCommissionDate和deliveryDate,我从来没有在这一刻接触到这部分代码

那么,问题是什么呢?错误在WillAspect和DidAspect之间,但最奇怪的是,这两个变量以相同的方式处理,但一个使应用程序崩溃,另一个正常


提前谢谢,很抱歉问了这么长的问题

为什么要检查值!=出租日期后为零=价值?此时值不能为nil。看起来cCommissionDateText==nil。@gnasher729:您是对的,该检查没有任何意义。不幸的是,这不是唯一的问题。另一方面,cCommissionDateText不是nil,我调试了它,它是我想要填充的文本字段。因此,如果为零,则错误将出现在textfield.text=[…]行
func fillText(textfield: UITextField!, value: NSDate?, altValue: String = "", prefix: String = ""){
    if let date = value {
        var formatter : NSDateFormatter = dateFormatter // That's a global variable
        if value != nil {
            textfield.text = prefix + formatter.stringFromDate(date)
        }
        else{
            textfield.text = altValue
        }
    } else {
        textfield.text = altValue
    }
}