在我们的iphone应用程序中,我们解析了api调用得到的日期。日期正确返回并且是有效的日期。现在只有在某些设备上,它会在意外发现零的错误时崩溃,同时展开可选值。这里是有问题的代码:iPhone日期格式化程序随机崩溃
//formatDate(date: date, format: FullDateFormat)
class func formatDate(date: String, format: String)->String{
if date.characters.count == 0 {return "" }
let formatter = DateFormatter()
formatter.dateFormat = Constants.FullDateFormat
let nsDate = formatter.date(from: date)
formatter.dateFormat = format
return formatter.string(from: nsDate!)
}
nsDate没有被格式化,因为它是零。
的Constants.FullDateFormat是定义为“M/d/yyyy的H:mm:ss的一个”静态字符串作为日期将总是以这种格式
到类函数的调用将会看起来像这样
let newDate = Helpers.formatDate(date: "9/27/2017 9:26:51 AM", format: "h:mm a")
一些设备崩溃,而大多数设备崩溃。如果我们不使用类功能,则应用程序可以正常工作。我没有看到任何原因,所以如果有人看到为什么会发生这种情况和可能的解决方案,请让我知道。
这可能是重复的,但并未显示在我执行的任何搜索中。感谢社区,他们指出了另外一个类似的问题,其答案已经在stackoverflow。如果这是重复的,我很抱歉。
不应使用强迫的展开'nsDate',你应该把它放在警戒声明中。大多数情况下,在你的应用程序崩溃的设备上,其他一些设置(例如语言环境)是不同的,这些会导致解析日期问题,因为你没有指定'DateFormatter'使用的相当多的信息 –
Thanks Martin R我在搜索时没有看到这种情况。我不介意删除它,但它可以帮助其他人。我会通过编辑并指出您发布的问题。 –
解决方案与“Martin R”的建议相同,但我理解Micah的困惑。 – kulss