首次安装应用程序时存储变量

在首次安装应用程序时尝试存储变量DateInstalled ,但每次应用程序加载此变量时都会被新日期覆盖。

我是Xcode新手,所以答案很明显。 我发现下面的代码将变量存储在用户默认值中,但每次它似乎跳到else语句。

 var DateInstalled: NSDate { get { if let returnValue = NSUserDefaults.standardUserDefaults().objectForKey("DateInstalled") as? NSDate { return returnValue } else { NSLog("Saving new Date") return NSDate() // Default value } } set { NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "DateInstalled") NSUserDefaults.standardUserDefaults().synchronize() } } 

嘿@Curtis Cowan尝试这个

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { let firstLaunch = NSUserDefaults.standardUserDefaults().boolForKey("FirstLaunchTime") if firstLaunch { println("Not First launch") } else { println("First launch") NSUserDefaults.standardUserDefaults().setObject(NSDate(), forKey:"FirstLaunchTime") } return true } 

首先让你的日期可选:

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

并在viewDidLoad方法中添加一个条件,只保存其值仍为零:

 override func viewDidLoad() { super.viewDidLoad() if installedDate == nil { installedDate = NSDate() print("First run") } else { print("Not first run") print(installedDate!) } } 

Xcode 8•Swift 3

 var installedDate: Date? { get { return UserDefaults.standard.object(forKey: "installedDateKey") as? Date } set { UserDefaults.standard.set(newValue, forKey: "installedDateKey") } }