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

Storing a variable when the app is first installed

尝试在首次安装应用程序时存储变量 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()
    }
}

首先让你的日期可选:

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

并在您的 viewDidLoad 方法中添加一个条件,仅在它仍然为 nil 时才保存其值:

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

嘿@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
      }