Получение разных результатов чтения из Firebase между симулятором iOS и реальным устройством - PullRequest
0 голосов
/ 07 декабря 2018

Я столкнулся с реальной проблемой, которую я не могу понять, почему это происходит.Я слишком новичок, чтобы найти проблему.

У меня есть этот код:

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 ...")
    }
}

На симуляторе iPhone X с IOS 12.1 все работает, как я хочу.

updateClasse1 - это значение базы данных, которое задается как let classe1.

То же самое для updateClasse2 & updateLAPL

Но когда я отправляю свое приложение намое устройство iPhone X с iOS 12.1 возвращает:

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"

Я не знаю, почему это происходит так.

1 Ответ

0 голосов
/ 09 декабря 2018

Поскольку вы анализируете строку, убедитесь, что ваш dateFormatter может проанализировать ее с использованным loale.Fe "20/01/1990" не будет анализировать с "en_US" локалью, в то время как "01/20/1990" не будет анализировать fe с "es_ES" локалью.

Чтобы убедиться, что вы можете установить формат самостоятельно:

self.dateFormatter.dateFormat = "dd/MM/yyyy"

или убедитесь, что вы используете ожидаемый языковой стандарт:

self.dateFormatter.locale = Locale(identifier: "en_US")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...