如何解决斯威夫特字符串日期
我从UserDefaults.standard
中以字符串形式读取日期,格式如下:
“ 2020-11-06T05:20:20 + 0100”
我尝试使用以下代码将此字符串转换为日期
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "de_DE")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let dateString: String! = UserDefaults.standard.string(forKey: "timeShared")
let date = dateFormatter.date(from: dateString)
但是,结果始终为nil
。显式使用let date = dateFormatter.date(from: dateString)!
会导致致命错误。
任何想法怎么办?
解决方法
将以前的代码更改为
dateFormatter.dateFormat = "\"yyyy-MM-dd'T'HH:mm:ssZ\""
随后返回一个整齐的日期。错误是从UserDefaults读取的日期包括""
。
可能是UserDefaults.standard.string(forKey: "timeShared")
没有没有值,或者该值不是字符串格式,而您正在let dateString: String! = UserDefaults.standard.string(forKey: "timeShared")
中强制展开,这使得致命错误。
最好添加条件,然后使用 dateString 。
请参考以下代码。
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "de_DE")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
if let dateString: String = UserDefaults.standard.string(forKey: "timeShared") {
let date = dateFormatter.date(from: dateString)
print(date)
} else {
print("Data in UserDefaults: \(UserDefaults.standard.string(forKey: "timeShared"))")
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。