创建日期对象时出现了一个奇怪的错误。
错误是"致命错误:在展开可选值时意外发现nil"
显示问题的简化代码是
let dateFormatter = NSDateFormatter() ;
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss" ;
let startDateText:String = (data["startDate"] as AnyObject? as? String) ?? "";
print( startDateText ) ;
let startDate:NSDate! = dateFormatter.dateFromString(startDateText) ;
print( startDate ) ;
打印时的数据对象是
{
calendar = archived;
endDate = "2016-01-25 15:15:00";
notes = "notes and something";
startDate = "2016-01-25 14:00:00";
title = "First event from the command line";
}
Archived是EKEventStore的日历对象
奇怪的部分是代码在另一台设备上运行。
关于如何处理和解决"致命错误的任何想法:在打开一个可选值&#34时出乎意料地发现nil?
答案 0 :(得分:3)
NSDateFormatter
的{{3}}会返回一个可选的NSDate
。您的let startDate:NSDate!
表示startDate
永远不会为零,但dateFromString
将返回零。
dateFromString返回nil的原因是因为您的日期格式字符串错误。尝试使用"yyyy-MM-dd HH:mm:ss"
作为评论中的Leo建议,并考虑将startDate
设为可选的NSDate
,只有在非零的情况下展开才能展开。