【发布时间】:2018-12-10 20:50:48
【问题描述】:
我遇到了一个真正的问题,我不明白它为什么会发生。我太初学者了,找不到问题。
我有这个代码:
func setPickerFromDataBase(){
if let user = Auth.auth().currentUser{
// user is connect
let ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
ref.child("Licences").child(userID!).child("Medical").observeSingleEvent(of: .value) {(snapshot) in
let value = snapshot.value as? NSDictionary
let classe1 = value?["Classe1"] as? String ?? "1/1/1870"
let classe2 = value?["Classe2"] as? String ?? "1/1/1870"
let lapl = value?["LAPL"] as? String ?? "1/1/1870"
self.dateFormatter.dateStyle = DateFormatter.Style.short
let updateClasse1 = self.dateFormatter.date(from: classe1) ?? self.dateFormatter.date(from: "01/01/1990")
let updateClasse2 = self.dateFormatter.date(from: classe2) ?? self.dateFormatter.date(from: "01/01/1990")
let updateLAPL = self.dateFormatter.date(from: lapl) ?? self.dateFormatter.date(from: "01/01/1990")
self.calsse1DatePicker.date = updateClasse1!
self.classe2DatePicker.date = updateClasse2!
self.laplDatePicker.date = updateLAPL!
self.setAlert()
}
} else {
fatalError("⛔️ error ...")
}
}
在带有 IOS 12.1 的模拟器 iPhone X 设备上,一切正常。
updateClasse1 是由let classe1 给出的firebase 值。
updateClasse2 和 updateLAPL 也一样
但是当我将我的应用程序发送到装有 iOS 12.1 的 iPhone X 设备时,会返回:
classe1 : The value from the dataBase
classe2 : The value from the dataBase
laps : The value from the dataBase
updateClasse1 : "01/01/1990"
updateClasse2 : "01/01/1990"
updateLAPL : "01/01/1990"
我不知道为什么会这样。
【问题讨论】:
-
您确定在两台设备上使用的是同一个用户吗?
-
由于您正在解析字符串,请确保您的日期可以使用您的语言环境进行解析(确保您选择了相同的语言和地区)。 F.e. “20/01/1990”不会解析“en-US”语言环境,而“01/20/1990”不会解析 f.e.使用“es-ES”语言环境。为确保您可以自己设置格式,f.e 为“dd/MM/yyyy”
-
@Daniel 非常感谢你的帮助,我完全忘记设置日期格式......我的错......但现在它工作得很好!!!
-
@Daniel 这是一个非常好的评论,应该作为答案发布。我会支持它,希望 OP 会接受它。