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