我遇到了一个真正的问题,我不明白为什么会这样。我太初学者也找不到问题。
我有以下代码:
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"
我不知道为什么会这样发生。
答案 0 :(得分:3)
由于要解析字符串,请确保dateFormatter可以将其与使用的loale一起解析。 F.e. "20/01/1990"
不会解析"en_US"
语言环境,而"01/20/1990"
不会解析f。 "es_ES"
语言环境。
为确保这一点,您可以自行设置格式:
self.dateFormatter.dateFormat = "dd/MM/yyyy"
或确保使用的语言环境是您期望的语言环境:
self.dateFormatter.locale = Locale(identifier: "en_US")