Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift-声明不带值的全局NSDate_Swift_Nsdate_Global - Fatal编程技术网

Swift-声明不带值的全局NSDate

Swift-声明不带值的全局NSDate,swift,nsdate,global,Swift,Nsdate,Global,我想在我的应用程序中创建一个全局NSDate,因为我想在此变量中保存应用程序首次打开的日期。我写 “var LaunchDate=NSDate()”在声明第一个视图控制器的主类之前,在viewdidload中,如果是第一次打开应用程序,则会将日期保存到全局变量LaunchDate中。但每次我打开应用程序时,它都会保存当前日期,因为“var LaunchDate=NSDate()”。 我没有找到解决方案,你有没有办法在没有他给出当前日期的情况下声明一个全局日期?请尝试以下方法: override

我想在我的应用程序中创建一个全局NSDate,因为我想在此变量中保存应用程序首次打开的日期。我写 “var LaunchDate=NSDate()”在声明第一个视图控制器的主类之前,在viewdidload中,如果是第一次打开应用程序,则会将日期保存到全局变量LaunchDate中。但每次我打开应用程序时,它都会保存当前日期,因为“var LaunchDate=NSDate()”。 我没有找到解决方案,你有没有办法在没有他给出当前日期的情况下声明一个全局日期?请尝试以下方法:

override func viewDidLoad() {
    var LaunchDate: NSDate

    // when you want to set the value for it:
    LaunchDate = NSDate()
}
问题是,您尝试执行的NSDate()是一个函数,它返回当前日期的值。

尝试以下操作:

override func viewDidLoad() {
    var LaunchDate: NSDate

    // when you want to set the value for it:
    LaunchDate = NSDate()
}
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
}

问题是,您尝试执行的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
}
代码检查值是否存在。
如果是,则读取值,如果否,则写入当前日期

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
}

您可以使用
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
}
全局变量是在任何外部定义的变量 函数、方法、闭包或类型上下文

在swift中,如果将变量封装在struct中,则可以在任何类中访问该变量

全局变量是在任何外部定义的变量 函数、方法、闭包或类型上下文

在swift中,如果将变量封装在struct中,则可以在任何类中访问该变量


我会将单例模式与
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

我将使用带有
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

看看我的答案。。。如果是这样的话,请写信给我@OscarDo你想保留两次发射之间的日期吗?@Anokrize我在评论中回答道:)看看我的答案。。。如果是这样的话,请写信给我@OscarDo你想保留两次发布之间的日期吗?@Anokrize我在评论中回答道:)谢谢你,但你没有完全回答这个问题,我希望LaunchDate是一个全局变量(在另一个ViewController中使用它)然后,方法是创建一个结构,您可以从anywhere@Oscar看看这个:。结构的优点是可以在所有类中使用它们。然后,您可以简单地访问变量及其值great!你有一个例子吗?是的,看看上面的@OscarThank你,但你没有准确回答这个问题,我希望LaunchDate是一个全局变量(在另一个ViewController中使用),然后方法是创建一个结构,你可以从anywhere@Oscar看看这个:。结构的优点是可以在所有类中使用它们。然后,您可以简单地访问变量及其值great!你有一个例子吗?是的,请看上面的@Oscar