我想在我的应用中创建一个全局NSDate,因为我想保存第一次在此变量中打开应用程序的日期。我写 “var LaunchDate = NSDate()”在声明第一个视图控制器的主类之前,在viewdidload中,如果它是第一次打开应用程序,它会将日期保存到全局变量LaunchDate中。但每次我打开应用程序时,由于“var LaunchDate = NSDate()”,它会保存当前日期。 我没有找到解决方案,你是否有任何想法宣布一个全球日期而没有给出当前日期?
答案 0 :(得分:4)
您可以使用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
}
答案 1 :(得分:0)
试试这个:
override func viewDidLoad() {
var LaunchDate: NSDate
// when you want to set the value for it:
LaunchDate = NSDate()
}
问题,你试图做的NSDate()是一个函数,它返回当前日期的值。
答案 2 :(得分:0)
全局变量是在any之外定义的变量 函数,方法,闭包或类型上下文
struct globalDate
{
static var LaunchDate = NSDate()
}
在swift中,如果将变量封装在struct中,则可以在任何类中访问它。
答案 3 :(得分:0)
我会使用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