首页 > 解决方案 > UserDefaults.standard.Integer 不适用于数字(Swift 5)

问题描述

我在 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"
            }
        }

该数字在我的控制台中打印为正确的数字,但它没有通过 Number == 函数,每次都通过 else 并打印“错误检查数字”

我将 xCode 11 与 Swift 5 一起使用。

标签: swiftxcodeintegernsuserdefaultsswift5

解决方案


设法用以下方法修复它:

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

我仍然不清楚为什么以前的方法不起作用,但这段代码修复了它。


推荐阅读