2016-01-18 2 views
0

Попытка сохранить переменную 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() 
    } 
} 

ответ

1

Эй @Curtis Коуэн попробовать с этим

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 
     } 
0

первым сделать дату дополнительно:

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