Swift - 声明一个没有值的全局 NSDate

Swift - Declare a global NSDate without value

我想在我的应用程序中创建一个全局 NSDate,因为我想在此变量中保存应用程序第一次打开的日期。我写 "var LaunchDate = NSDate()"在第一个view controller的mainclass声明之前,在viewdidload中,如果是第一次打开app,则将日期保存到全局变量LaunchDate中。但是每次我打开应用程序时,它都会保存当前日期,因为 "var LaunchDate = NSDate()"。 我没有找到解决方案,您是否有任何想法声明一个全局日期而不是他给出当前日期?

试试这个:

override func viewDidLoad() {
    var LaunchDate: NSDate

    // when you want to set the value for it:
    LaunchDate = NSDate()
}

问题在于,您尝试执行的 NSDate() 是一个函数,它返回当前日期的值。

您可以使用 NSUserDefaults 来存储值。

代码检查值是否存在。
如果是,它会读取值,如果不是,它会写入当前日期。

var launchDate : NSDate!

let defaults = NSUserDefaults.standardUserDefaults()
if let dateOfFirstLaunch = defaults.objectForKey("dateOfFirstLaunch") as? NSDate {
  launchDate = dateOfFirstLaunch
} else {
  let currentDate = NSDate()
  defaults.setObject(currentDate, forKey:"dateOfFirstLaunch")
  launchDate = currentDate
}

Global variables are variables that are defined outside of any function, method, closure, or type context

struct globalDate 
{
   static var LaunchDate = NSDate()
}

在 swift 中,如果将变量封装在结构中,则可以在任何 类 中访问它。

Document

Global Variable

我会在 NSUserDefaults 中使用单例模式。

代码应该是这样的

import Foundation

class UserDefaults {
    static let sharedInstance = UserDefaults()

    var launchDate: NSDate? {
        get {
            return NSUserDefaults.standardUserDefaults().objectForKey("launch_date") as? NSDate
        }
        set {
            NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "launch_date")
        }
    }
}

使用此代码访问它

UserDefaults.sharedInstance.launchDate