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