2017-01-14 5 views
-2

アプリが終了してからアプリをもう一度起動するまでの経過時間を知る必要があります。 appIsTerminatedのときにappDelegateに保存してstartDateを保存する必要があると思います。その後、appDidLaunchのappDidLaunchでその値にアクセスし、appDelegateでそれらの時間の差を計算する必要があります。私は数秒で違いが必要ですし、私はviewControllerの違いを使用したいと思います。迅速にXcode 8でこれを行うにはどうすればいいですか?最後のアプリの終了から次の起動までの時間を秒単位で計算する

date2.timeIntervalSince(date1)

返さTimeIntervaldate1からdate2までの秒数です:

答えて

2

はい、それはという最も単純なの解決策です。あなたの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() 
} 

そして。 もっと良い方法は、この目的のためにグローバル定数を定義することです。そのため、どこかの文字列でタイプミスをしないようにします。

3

DateクラスはtimeIntervalSince機能を持っています。

ビューコントローラで使用する場合は、UserDefaultsのような場所に保存してそこからアクセスできます。

関連する問題