如何保存变量的值?
How do I save the value of a variable?
下面是我的代码的简要说明:
var myVar = 0
if (button image is equal to "mybutton image") {
myVar = 1
print("It works")
} else {
myVar = 2
print("Not working")
}
ButtonPress {
print(myVar)
}
这里的问题是,当我 运行 应用程序时,我在控制台中看到它打印 "it works" 但是当我按下按钮时 myVar
等于 0
再次。我如何确定当我按下按钮时 myVar
等于 1
?
这里是要求的完整代码:
@IBAction func ThingyButtton(_ sender: UIButton) {
if let ButtonImage = myButton.image(for: .normal),
let Image = UIImage(named: "LoseWeightGreen.png"),
UIImagePNGRepresentation(ButtonImage) == UIImagePNGRepresentation(Image) {
thingy = 1
print("1")
} else {
thingy = 2
print("2")
}
}
@IBAction func ButtonThingyN(_ sender: UIButton) {
if(thingy == 1) {
print("ok")
let storyboard = UIStoryboard(name: "let", bundle: nil)
let secondVC = storyboard.instantiateViewController(withIdentifier: "FirstVC")as! FirstVC
self.navigationController?.pushViewController(secondVC, animated: true)
} else{
print("good")
let storyboard = UIStoryboard(name: "let", bundle: nil)
let secondVC = storyboard.instantiateViewController(withIdentifier: "SecondVC")as! SecondVC
self.navigationController?.pushViewController(secondVC, animated: true)
}
}
正如我在评论中所解释的那样,您在这里需要一些不同的逻辑尝试使用 switch 而不是 if else,
@IBAction func ThingyButtton(_ sender: UIButton) {
let defaults = UserDefaults.standard
if let ButtonImage = myButton.image(for: .normal),
let Image = UIImage(named: "LoseWeightGreen.png"),
UIImagePNGRepresentation(ButtonImage) == UIImagePNGRepresentation(Image) {
defaults.set(1, forKey: "thingy")
defaults.synchronize()
print("1")
} else {
defaults.set(2, forKey: "thingy")
defaults.synchronize()
print("2")
}
}
@IBAction func ButtonThingyN(_ sender: UIButton) {
let defaults = UserDefaults.standard
if defaults.object(forKey: "thingy") != nil {
let thingy = defaults.integer(forKey: "thingy")
let storyboard = UIStoryboard(name: "let", bundle: nil)
switch thingy{
case 1:
var moveTo = storyboard.instantiateViewController(withIdentifier: "FirstVC") as! FirstVC
self.navigationController?.pushViewController(moveTo, animated: true)
break
case 2:
var moveTo = storyboard.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
self.navigationController?.pushViewController(moveTo, animated: true)
break
default:
print("Thingy value is \(thingy)")
return
}
}
}
我可以使用 UserDefaults
简单地说,我只是将 userdefults 设置为 1 和 2,然后使用 if 语句检查它们!
下面是我的代码的简要说明:
var myVar = 0
if (button image is equal to "mybutton image") {
myVar = 1
print("It works")
} else {
myVar = 2
print("Not working")
}
ButtonPress {
print(myVar)
}
这里的问题是,当我 运行 应用程序时,我在控制台中看到它打印 "it works" 但是当我按下按钮时 myVar
等于 0
再次。我如何确定当我按下按钮时 myVar
等于 1
?
这里是要求的完整代码:
@IBAction func ThingyButtton(_ sender: UIButton) {
if let ButtonImage = myButton.image(for: .normal),
let Image = UIImage(named: "LoseWeightGreen.png"),
UIImagePNGRepresentation(ButtonImage) == UIImagePNGRepresentation(Image) {
thingy = 1
print("1")
} else {
thingy = 2
print("2")
}
}
@IBAction func ButtonThingyN(_ sender: UIButton) {
if(thingy == 1) {
print("ok")
let storyboard = UIStoryboard(name: "let", bundle: nil)
let secondVC = storyboard.instantiateViewController(withIdentifier: "FirstVC")as! FirstVC
self.navigationController?.pushViewController(secondVC, animated: true)
} else{
print("good")
let storyboard = UIStoryboard(name: "let", bundle: nil)
let secondVC = storyboard.instantiateViewController(withIdentifier: "SecondVC")as! SecondVC
self.navigationController?.pushViewController(secondVC, animated: true)
}
}
正如我在评论中所解释的那样,您在这里需要一些不同的逻辑尝试使用 switch 而不是 if else,
@IBAction func ThingyButtton(_ sender: UIButton) {
let defaults = UserDefaults.standard
if let ButtonImage = myButton.image(for: .normal),
let Image = UIImage(named: "LoseWeightGreen.png"),
UIImagePNGRepresentation(ButtonImage) == UIImagePNGRepresentation(Image) {
defaults.set(1, forKey: "thingy")
defaults.synchronize()
print("1")
} else {
defaults.set(2, forKey: "thingy")
defaults.synchronize()
print("2")
}
}
@IBAction func ButtonThingyN(_ sender: UIButton) {
let defaults = UserDefaults.standard
if defaults.object(forKey: "thingy") != nil {
let thingy = defaults.integer(forKey: "thingy")
let storyboard = UIStoryboard(name: "let", bundle: nil)
switch thingy{
case 1:
var moveTo = storyboard.instantiateViewController(withIdentifier: "FirstVC") as! FirstVC
self.navigationController?.pushViewController(moveTo, animated: true)
break
case 2:
var moveTo = storyboard.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
self.navigationController?.pushViewController(moveTo, animated: true)
break
default:
print("Thingy value is \(thingy)")
return
}
}
}
我可以使用 UserDefaults
简单地说,我只是将 userdefults 设置为 1 和 2,然后使用 if 语句检查它们!