在我的代码dateFormatter.date
中多次循环使用(超过100次),即使输入日期格式正确,我也有时会崩溃。获取日期为零(有时)。
getDayFromDate()函数循环并传递从Web服务接收的不同日期(例如2018-06-17T00:00:00)作为参数。始终将时间设为00:00:00。 inputDateString已检查,并且始终为正确格式。
extension Formatter {
static let enUSPOSIX: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")//For 11.3.1 version change
return formatter
}()
}
func getDayFromDate(inputDateString: String) -> Int{
let dateFormatter = Formatter.enUSPOSIX
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let date = dateFormatter.date(from: inputDateString ) // e.g. 2018-06-17T00:00:00
dateFormatter.timeZone = TimeZone(identifier: "UTC")
let calendar = Calendar.current
let dayComponent = calendar.component(.day, from: date!)
return dayComponent
}
我观察到,当iPhone中运行的后台应用过多时,只会崩溃。
答案 0 :(得分:0)
在编写代码时不要使用强制展开。如果您的变量持有nil值,它将崩溃
更改代码
let dayComponent = calendar.component(.day, from: date!)
到
if let convertedDate = date {
let dayComponent = calendar.component(.day, from: convertedDate)
}