はい、それはという最も単純なの解決策です。あなたのViewControllerあなたは両方の日付(起動と終了が設定された)場合にだけ体に取得します上記の例ではそう
class YourViewController: UIViewController {
func method() {
if let launchDate = UserDefaults.standard.object(forKey: "latestLaunchDate") as? Date,
let terminationDate = UserDefaults.standard.object(forKey: "latestTerminationDate") as? Date
{
// your duration
let terminationDuration = launchDate.timeIntervalSince(terminationDate)
}
}
}
で
public func applicationDidFinishLaunching(_ application: UIApplication){
UserDefaults.standard.set(Date(), forKey: "latestLaunchDate")
// your code
return true
}
public func applicationWillTerminate(_ application: UIApplication) {
UserDefaults.standard.set(Date(), forKey: "latestTerminationDate")
//just to ensure that it is saved
UserDefaults.standard.syncronize()
}
そして。 もっと良い方法は、この目的のためにグローバル定数を定義することです。そのため、どこかの文字列でタイプミスをしないようにします。