如何 运行 在整个应用程序的生命周期中只获取一次数据?

How to run data only once in whole app's life?

我想在 NSUserdefaults 中设置一些数据,但我只想在开始时设置它。我有一种感觉,这会进入 AppDelegate 的某个地方。

比如我想放一个"isLoggedIn" bool check,但是我需要在运行前设置它等于false,这样它才能在运行时检查它。

NSUserDefaults(或 Swift 3 中的 UserDefaults)有一个函数 register(defaults:),可让您提供包含 "default defaults" 或起始默认值的字典。这就是你所需要的。我通常在 App 委托的初始化方法中调用 register(defaults:),因此它在应用程序启动的早期就被调用,在您的任何实例方法被调用之前。您的应用委托中的初始化方法在 Swift:

中可能如下所示
func initialize() {
  let dict: [String: Any] = [
    "Key1": "value1",
    "Key2": 3,
    "isLoggedIn": false]
  UserDefaults.standard.register(defaults: dict)
}