swift - 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 一起使用。
解决方案
设法用以下方法修复它:
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")
}
}
我仍然不清楚为什么以前的方法不起作用,但这段代码修复了它。
推荐阅读
- ios - 如何为 Flutter 应用创建 iOS LaunchScreen.storyboard?
- dart - Dart 2.0.0 访问扩展另一个类的变量
- javascript - 如何在 React 中分别切换多个显示
- c# - 将 SqlCommand 作为参数传递给函数
- javascript - EJS 函数没有从 Express 调用值
- python - 使用python为xml文件中的子元素缩进
- mailgun - Mailgun:电子邮件转发不起作用?
- php - 从本地文件系统复制文件并处理到另一台服务器的数据库中
- android - Xamarin Android:接收 Firebase 通知令牌
- java - 任务 ':query-api:compileJava' 的 Gradle 执行失败。