我在NSUserDefaults的早期版本的应用程序中以特定的日期格式保存了一个日期作为数组中的字符串。
我的问题是我的应用程序自该版本以来已经发生了很多变化,现在我想将保存的日期从以前的版本转换为我将从现在开始使用的日期格式
这是我正在使用的代码。
if userDefault.objectForKey("day") == nil {
return
} else {
// Add the first date created from previous version
let day = userDefault.objectForKey("day") as? String
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let date: NSDate = dateFormatter.dateFromString(day!)!
错误'致命错误:在展开可选值时意外发现nil'出现在此行
let date: NSDate = dateFormatter.dateFromString(day!)!
主题1:EXC_BREAKPOINT(代码= 1 ....
答案 0 :(得分:1)
您使用强制解包来展开但不确定dateFromString
函数的返回值!= nil,它会引发异常。
尝试使用!访问不存在的可选值会触发a 运行时错误。始终确保可选项包含非零值 使用前的价值!强行解开它的价值。
您无法确保userDefault.objectForKey("day")
随时都存储字符串。
你的存储字符串是否格式化? "yyyy-MM-dd HH:mm:ss"
您最好打开使用可选绑定以确保数据不是零或有效格式
if let day = userDefault.objectForKey("day") as? String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
if let date = dateFormatter.dateFromString(day) {
// convert success
print(date)
}
}