我正在尝试让我的应用程序彻底检查UserDefault
以查看它是否发生了变化。如果默认值为viewDidLoad
,则为20,之后的时间减少为15,我希望ViewController
刷新并显示正确的数字。这是我读取默认值的代码。
import UIKit
let Ironcnt = UserDefaults.standard
let Goldcnt = UserDefaults.standard
let Fiveth = UserDefaults.standard
let shipcnt = UserDefaults.standard
let empirecnt = UserDefaults.standard
var fiveth = Int()
var iron = Int()
var gold = Int()
var ships = Int()
var empires = Int()
class twenty: UIViewController {
@IBOutlet weak var fiveth1: UILabel!
@IBOutlet weak var iron1: UILabel!
@IBOutlet weak var gold1: UILabel!
@IBOutlet weak var ships1: UILabel!
@IBOutlet weak var empire1: UILabel!
@IBOutlet weak var webViewBG: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let htmlPath = Bundle.main.path(forResource: "WebViewContent", ofType: "html")
let htmlURL = URL(fileURLWithPath: htmlPath!)
let html = try? Data(contentsOf: htmlURL)
self.webViewBG.load(html!, mimeType: "text/html", textEncodingName: "UTF-8", baseURL: htmlURL.deletingLastPathComponent())
if (Fiveth.value(forKey: "Fiveth") != nil){
fiveth = Fiveth.value(forKey: "Fiveth") as! NSInteger!
fiveth1.text = NSString(format: "Fiveth: %i", fiveth) as String
}
if (Ironcnt.value(forKey: "Ironcnt") != nil){
iron = Ironcnt.value(forKey: "Ironcnt") as! NSInteger!
iron1.text = NSString(format: "Iron: %i", iron) as String
}
if (Goldcnt.value(forKey: "Goldcnt") != nil){
gold = Goldcnt.value(forKey: "Goldcnt") as! NSInteger!
gold1.text = NSString(format: "Gold: %i", gold) as String
}
}
答案 0 :(得分:1)
重构所有这些,你不需要创建这么多的引用:
let Ironcnt = UserDefaults.standard
let Goldcnt = UserDefaults.standard
let Fiveth = UserDefaults.standard
let shipcnt = UserDefaults.standard
let empirecnt = UserDefaults.standard
var fiveth = Int()
var iron = Int()
var gold = Int()
var ships = Int()
var empires = Int()
像这样:
var fiveth: Int {
set {
fiveth1.text = newValue
UserDefaults.standard.set(newValue, forKey: "fiveth")
}
get {
return UserDefaults.standard.integer(forKey: "fiveth")
}
}
然后在更改int
时会更新userdefault和label