ios 7与dateFormatter崩溃

时间:2015-07-26 21:10:17

标签: ios swift nsdateformatter

    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写这个呢

1 个答案:

答案 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
}

一些建议使您的代码更多" Swifty"

  1. 你以as String结束第一行。您没有必要将String投射到......以及String
  2. 您正在第一行创建变量。这有必要吗?如果值未更改,则应创建常量(使用let)。这样编译器将避免您以后无意中更改它。而且(我怀疑,但我不是100%肯定)let而不是var允许编译器做一些优化。
  3. 第2行也是如此,dateFormatter可以是常数。
  4. 最后在最后一行,您将NSDate?投射到NSDate!。为什么?请记住,每次你诉诸这个人!时,你都会在Swift中做一些有风险的事情。您应该使用条件展开
  5. 这4个更改包含在我上面的代码中。

    希望这有帮助。