我在UserDefaults中保存一个计数,并用viewDidPear 加载
保存在此处:
UserDefaults.standard.set(JSon.runways.count, forKey: "RunwaysCount")
并且通过print((函数检查保存期间的数字是否正确。
然后在viewDidPear下,我检查这个号码:
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==功能,每次都会通过其他功能并打印"错误检查数字">
我将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")
}
}
我仍然不清楚为什么以前的方法不起作用,但这段代码修复了它
标量类型,如UserDefaults
中的Int, Double
和Bool
,设计用于在没有键的情况下返回默认值(0、0.0和false(。
你可以利用这种行为
let runwayCount = UserDefaults.standard.integer(forKey: "RunwaysCount")
print(runwayCount)
switch runwayCount {
case 0:
self.viewRunway1.isHidden = true
self.viewRunway2.isHidden = true
print("Runways Count == 0")
case 1:
self.viewRunway1.isHidden = false
self.viewRunway2.isHidden = true
case 2:
self.viewRunway1.isHidden = false
self.viewRunway2.isHidden = false
default:
print("Error checking number")
}
}