ios - 不断检查和刷新 userdefault 整数

标签 ios swift3

我正在尝试让我的应用不断检查 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
    }
}

最佳答案

重构所有这些,你不需要创建那么多引用:

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 和标签

关于ios - 不断检查和刷新 userdefault 整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41355590/

相关文章:

ios - 动画 View 背景更改

ios - 快速迭代数组时出错

swift - AlamofireObjectMapper responseObject 方法迁移问题

ios - present(_:animated:completion :)在Swift 3中不起作用

ios - 传递NSTimer调用的方法的参数

ios - TableView、数组和 segue

ios - Swift 3 中的计数元素

xcode - 如何获取自定义标签栏以在 Xcode 中显示标签栏项目的选定图像集?

ios - 将 UIBarButton 移动到 UINavigationBar 左侧的右侧 - Swift 2

ios - 仅在 iOS 9 上崩溃 : [MKPlacemark initWithCoordinate:]: unrecognized selector