gpt4 book ai didi

ios - 无法解析真实设备上的日期,可在模拟器中工作

转载 作者:行者123 更新时间:2023-11-30 12:32:27 25 4
gpt4 key购买 nike

我有一个应用程序,如果我尝试在真实设备(iPhone 5S 和 6)上运行该应用程序 - Xcode 显示错误:

fatal error: unexpectedly found nil while unwrapping an Optional value 2017-04-11 00:43:58.724143+0200 APN[2153:475883] fatal error: unexpectedly found nil while unwrapping an Optional value

有一个代码块有问题。但在模拟器中一切正常且正确。

let stringBefore = "Mon, 10 Apr 2017 11:39:24 +0000"

let startIndexDate = stringBefore.index(stringBefore.startIndex, offsetBy: 5)
let endIndexDate = stringBefore.index(stringBefore.endIndex, offsetBy: -15)

let rangeDate = startIndexDate..<endIndexDate
let stringAfter = stringBefore.substring(with: rangeDate)

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy"

let date = dateFormatter.date(from: stringAfter)
dateFormatter.dateFormat = "dd.MM.yyyy"

let finish = dateFormatter.string(from: date!) // there is the problem but why in Simulator is ok?

我知道我可以写

dateFormat = "EEE, dd MMM yyyy hh:mm:ss +zzzz"

但是我想问一下问题出在哪里?

最佳答案

这可能是您的转换器无法处理的奇怪时区问题。如果不进行一些调试我无法知道。

无论如何,我建议使用另一个 DateFormatter 来查找日期,而不是尝试解析字符串:

let startingFormatter = DateFormatter()
startingFormatter.dateFormat = "EEE, dd MMM y HH:mm:ss Z"

let endingFormatter = DateFormatter()
endingFormatter.dateFormat = "dd.MM.yyyy"

let stringBefore = "Mon, 10 Apr 2017 11:39:24 +0000"
let actualDate = startingFormatter.date(from: stringBefore)

if let actualDate = actualDate {
let finish = endingFormatter.string(from: actualDate) //result is "10.04.2017"
}
else {
//handle error
}

此外,作为一般规则,强制解包可选的 (date!) 是一个坏主意,除非您 100% 确信存在一个值(您不能在这个值中)情况,因为您不知道幕后发生了什么),或者如果该值不存在,您的程序崩溃也没关系。

关于ios - 无法解析真实设备上的日期,可在模拟器中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43334164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com