var dataString = "April 20, 1972" as String
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
// convert string into date
let dateValue = dateFormatter.dateFromString(dataString) as NSDate!
在ios7上运行时,dateValue为nil。这在ios8上工作正常。怎么会为ios7写这个呢
答案 0 :(得分:6)
您指定的格式(MM-dd-yyyy
)不与代表您日期的String
匹配。
此代码可以完成这项工作。
let dataString = "April 20, 1972"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy"
if let dateValue = dateFormatter.dateFromString(dataString) {
// here you can safely use dateValue
}
as String
结束第一行。您没有必要将String
投射到......以及String
let
)。这样编译器将避免您以后无意中更改它。而且(我怀疑,但我不是100%肯定)let
而不是var
允许编译器做一些优化。dateFormatter
可以是常数。NSDate?
投射到NSDate!
。为什么?请记住,每次你诉诸这个人!
时,你都会在Swift中做一些有风险的事情。您应该使用条件展开。这4个更改包含在我上面的代码中。
希望这有帮助。