ios - 日期时间格式化程序崩溃
问题描述
在我的代码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 中运行的后台应用程序太多时,它只会崩溃。
解决方案
编写代码时不要使用强制解包。如果您的变量保持 nil 值,它将崩溃
更改您的代码
let dayComponent = calendar.component(.day, from: date!)
至
if let convertedDate = date {
let dayComponent = calendar.component(.day, from: convertedDate)
}
推荐阅读
- python - 如何使该机器人可以在任务管理器中工作?
- wpf - 自定义绘制复选框时,如何将椭圆形的填充颜色绑定到复选框的前景?
- android - 配置项目 ':app' 时出现问题。在 react-native 中并给出一些字节码作为错误
- php - LARAVEL - 我想从包含主类别 ID 的上部 _id 列的类别对象访问主类别
- ruby - 将数组字符串对象转换为哈希?
- grep - 如何使用 zgrep 在归档文件中查找与给定文件名模式匹配的内容?
- angular - 使用 Angular AOT 构建失败
- laravel - 如何在 Laravel Eloquent 中的 take() 之后 orderBy()
- python - 单击提交时,UpdateView 和 DeleteView 导致错误 405
- ios - SwiftUI / iOS | 在没有 NSNotification 的情况下获取键盘大小