Я получаю ноль в переменной при запуске приложения на iPad3, но не на симуляторе. Swift 4 - PullRequest
0 голосов
/ 28 марта 2019

В моем первом приложении у меня есть функция, которая отправляет в Firebase словарь [String:String], а в Firebase я вижу, что все опубликованные значения - String.Во втором приложении у меня есть функция, которая читает этот узел и извлекает также как [String:String], но в моментальном снимке выведите два значения, Booking Date и Booking Id, похожие на Int.Затем я делаю их Int такими, какими они мне нужны, и когда я запускаю свое второе приложение на симуляторе iOS 12.1, это не все хорошо и работает, как ожидалось, но когда я запускаю его на своем iPad 3 iOS 9.3.5, приложение вылетаетпотому что let bookingId = Int(value["Booking Id"]!) равен нулю, но этого не происходит с let bookingDate = Int(value["Booking Date"]!).Похоже, iPad не любит преобразовывать более одного значения.Вы видите какое-либо решение для этого?Вот функция:

func getMyBookings() {

    let ref = Database.database().reference()
    ref.child("Continent").child("Europe").child("Country").child("Italy").child("Region").child("Emilia-Romagna").child("City").child("Bologna").child("Shops").child("Workshop Bookings").queryOrdered(byChild: "Shop Name").queryEqual(toValue: "Spezial Cycle").observe(.value)  { (snapshot) in

        //        ref.child("Continent").child("Europe").child("Country").child("Italy").child("Region").child("Emilia-Romagna").child("City").child("Bologna").child("Shops").child("Workshop Bookings").queryOrdered(byChild: "Shop Name").queryEqual(toValue: "Spezial Cycle").observe(.childAdded, with: { (snapshot) in

        print(snapshot)
        if let data = snapshot.value as? [String: [String:String]] {

            for (_, value) in
                data{
                    let bookingDate = Int(value["Booking Date"]!)!
                    //                        let bookingDate = value["Booking Date"]!
                    print("bookingDate is: \(String(describing: bookingDate))")
                    let bookingStart = value["Booking Start"]
                    let bookingEnd = value["Booking End"]
                    let customerName = value["User Name"]
                    let bookingId = Int(value["Booking Id"]!)!
                    print("bookingId is :\(String(describing: bookingId))")
                    let booking: (bookingDate: Int, bookingStart: String, bookingEnd: String, customerName: String, bookingId: Int) = (bookingDate!, bookingStart!, bookingEnd!, customerName!, bookingId: bookingId)
                    print("booking is: \(booking)")
                    self.bookingsArray.append(booking)
                    self.calculateBookedTimeSlots()
            }
            self.calculateBookedTimeSlots()
            if #available(iOS 10.0, *) {
                let actions: [UNNotificationAction] = [UNNotificationAction(identifier: "chiudi", title: "Chiudi", options: [.foreground])]
                Notifications.newTimeIntervalNotification(notificationType: "New booking", actions: actions, categoyIdentifier: "New Booking", title: "Nuova prenotazione", body: "Hai una nuova prenotazione", userInfo: [:], timeInterval: 5, repeats: false)
            } else if #available(iOS 9.0, *){
                // Fallback on earlier versions

                Notifications.newTimeIntervalNotification(notificationType: "New booking", actions: [], categoyIdentifier: "New Booking", title: "Nuova prenotazione", body: "Hai una nuova prenotazione", userInfo: [:], timeInterval: 5, repeats: false)
            }
        }
        //        })
    }
}

А это снимок экрана, на котором Booking Date и Booking Id выглядят как Int:

Snap (Workshop Bookings) {
    "-Lb4XzGtLtnBAgoPB6Ay" =     {
        "Booking Date" = 20190329;
        "Booking End" = "14:00";
        "Booking Id" = 201903291300;
        "Booking Start" = "13:00";
        "Shop Logo Url" = "https://firebasestorage.googleapis.com/v0/b/fix-it-b4b00.appspot.com/o/Spezial%20Cycle%2FSpezial%20Cycle%20logo.png?alt=media&token=016cc976-ae8d-4c71-a77f-a899d661be20";
        "Shop Name" = "Spezial Cycle";
        "User Name" = "";
        "Works List" = "Revisione Generale, ";
    };
} 

1 Ответ

1 голос
/ 28 марта 2019

Мне кажется, проблема в том, что ваш iPad 3 по-прежнему работает на 32-битной шине данных, а значение 201903291300 немного слишком велико, чтобы вписаться в этот Int32 (который является реализацией Int в 32-битной архитектуре).

Вы должны попытаться использовать Int64 вместо Int

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...