fatal error: unexpectedly found nil while unwrapping an Optional value 错误
由于在模拟器上进行测试时候并没有问题,但在真机上出现崩溃错误,调试后发现是由于未设置时间的时区导致,希望能引起注意
代码如下(此方法是用来将参数中的时间与当前时间比较并返回相应的字符串(在微博中的发布时间中可以用到)):
func getCreateAt(date: String) ->String{
let formatter = NSDateFormatter()
//!!!!!必须设置时区
formatter.locale = NSLocale(localeIdentifier: "cn")
//Z 时区
formatter.dateFormat = "EEE MMM dd HH:mm:ss Z yyyy"
//进行转换
let time = formatter.dateFromString(date)
let canlader = NSCalendar.currentCalendar()
//设置获取的 年 月 日
let unit = NSCalendarUnit(arrayLiteral: .Year,.Month,.Day,.Hour,.Minute)
//比较时间
let comps = canlader.components(unit, fromDate: time!, toDate: NSDate(), options: [])
if comps.year == 0{//是本年
if comps.month == 0{//是本月
if comps.day == 0{//是今天
if comps.hour == 0{//1小时之内
if comps.minute == 0{//刚刚
return "刚刚"
}else{//xx分钟之前
return "\(comps.minute)分钟前"
}
}else{
return "\(comps.hour)小时前"
}
}else if comps.day == 1{// 是昨天
formatter.dateFormat = "HH:mm"
let str = formatter.stringFromDate(time!)
return"昨天 \(str)"
}else{
formatter.dateFormat = "MM-DD HH:mm"
let str = formatter.stringFromDate(time!)
return "\(str)"
}
}else {//不是本月
formatter.dateFormat = "MM-DD HH:mm"
let str = formatter.stringFromDate(time!)
return "\(str)"
}
}else {//不是今年
formatter.dateFormat = "YY-MM-DD HH:mm"
let str = formatter.stringFromDate(time!)
return "\(str)"
}
return ""
}