Stockage d'une variable lors de la première installation de l'application

Tentative de stockage de la variable DateInstalled lors de la première installation de l'application, mais à chaque fois que l'application charge cette variable, elle est remplacée par la nouvelle date.

Je suis nouveau à Xcode donc la réponse est probablement évidente. J'ai trouvé ce code ci-dessous pour stocker la variable dans les valeurs par défaut de l'user mais chaque fois il semble passer à l'instruction 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() } } 

Hey @Curtis Cowan essayer avec ça

 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 } 

rendez d'abord votre date optionnelle:

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

et à l'intérieur de votre méthode viewDidLoad ajoutez un conditionnel pour n'save sa valeur que s'il est encore nul:

 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") } }