ios 7 使用 dateFormatter 崩溃

ios 7 crash with dateFormatter

    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

写这篇文章

您指定的格式 (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. 您正在第一行创建一个变量。那有必要吗?如果该值没有改变,您应该创建一个 constant(使用 let)。这样编译器将避免您以后无意中更改它。并且(我怀疑但我不是 100% 确定)let 而不是 var 允许编译器进行一些优化。
  3. 第 2 行也是一样,dateFormatter 可以是常数。
  4. 最后一行中,您将 NSDate? 转换为 NSDate!。为什么?请记住,在 Swift 中,每次求助于此人 ! 都是在冒险。您应该改用 条件解包

我上面的代码中包含这 4 个更改。

希望对您有所帮助。