UserDefaults.standard.Integer не работает с числом (Swift 5) - PullRequest
0 голосов
/ 08 апреля 2020

Я сохраняю счет в UserDefaults и загружаю его с помощью viewDidAppear

Сохранение здесь:

UserDefaults.standard.set(JSon.runways.count, forKey: "RunwaysCount")

, и при сохранении число корректно, как проверено функцией print ().

затем в viewDidAppear я проверяю этот номер:

        if UserDefaults.standard.object(forKey: "RunwaysCount") == nil
        {
            self.viewRunway1.isHidden = true
            self.viewRunway2.isHidden = true

            print("Runways Count == nil")
        }
        else
        {
            let Number = UserDefaults.standard.integer(forKey: "RunwaysCount")
            print(Number)
            if Number == 1
            {
                self.viewRunway1.isHidden = false
                self.viewRunway2.isHidden = true

            }
            else if Number == 2
            {
                self.viewRunway1.isHidden = false
                self.viewRunway2.isHidden = false
            }
            else
            {
                print("Error checking number"
            }
        }

Число печатается как правильное число в моей консоли, однако оно не go через функции Number ==, проходит через каждый раз время и печать "Ошибка проверки номера"

Я использую xCode 11 с Swift 5.

1 Ответ

0 голосов
/ 08 апреля 2020

Удалось исправить это с помощью следующего:

    if let RunwayCount = UserDefaults.standard.object(forKey: "RunwaysCount") as? IntegerLiteralType
    {
        print(RunwayCount)
        if RunwayCount == 1
        {
            self.viewRunway1.isHidden = false
            self.viewRunway2.isHidden = true

            print("Working Integer 1")
        }
        if RunwayCount == 2
        {
            self.viewRunway1.isHidden = false
            self.viewRunway2.isHidden = false
            print("Working Integer 2")
        }
    }

Мне все еще неясно, почему предыдущий способ не сработал, но этот код исправляет его.

...