2017-04-24 10 views
0

私はタスクのカウントダウンタイマーです。アプリに記録できるように経過時間を保存する方法があるかどうかを知りたいと思います。たとえば、いつまでもカウントダウンタイマーを使用して、カウントダウンが生涯価値として実行されていた時間を保存します。 10分 スウィフトで経過時間を追跡する

  • タイマため

    • カウントダウンタイマーセットが4分タイマーに残りの30 秒で、5分30秒間実行されます。
    • 命令のこの正確なセットは、全生涯値は11分であろう繰り返した場合の経過セッション時間(5分30秒)の値は、アプリで を格納し、合計

    に添加します。

    誰かがこのような機能を実装する方法を説明するリソースの方向で私を指摘することができれば、これは非常に感謝しています。

  • +1

    これをアプリの起動の間中も継続したいですか? – brandonscript

    +0

    あなたは、ユーザーの背景/アプリを殺す/デバイスの電源を切るときにあなたの "論理的な時間"が経過するかどうかを考慮する必要があります。タイマーに注意してください*彼らは*経過時間を保証していません。また、ユーザーはデバイスの時刻設定を変更することもできます。 –

    +0

    こんにちはbrandonscript、はい、私はこれがアプリの起動の間に持続したいと思います。 – Trlewi

    答えて

    0

    このような番号を永続化するためのいくつかのオプションがあります。最も簡単で絶対的な方法は、おそらくUserDefaultsを使用して番号を格納/取得することです。それは正確にUserDefaultsの意図された使用ではありませんが、あなたがちょうど1つのTimeIntervalを格納しているなら、それはあなたに問題を引き起こさないでしょう。

    裸の骨の実装は次のようになります。

    let interval: TimeInterval = 20 //replace with the time from your countdown timer 
    UserDefaults.standard.set(interval, forKey: "totalTimeElapsed") 
    

    そして、あなたは既存の経過時間に新しい時間を追加する必要があるため、あなたはこのようなものだろう:その他

    let newTimeElapsed: TimeInterval = 20 //replace with time from countdown timer 
    let totalSoFar = UserDefaults.standard.double(forKey: "totalTimeElapsed") //will be 0 if it doesn't exist 
    UserDefaults.standard.set(newTimeElapsed + totalSoFar, forKey: "totalTimeElapsed") 
    

    をあなたがこれを行うことができる標準的な方法はNSKeyedArchiverまたはCore Dataですが、Core Dataは1の数字を維持するための大きな過労です。

    +0

    これは単なるインスタンスではないでしょう、これは、アプリケーションの今後のすべてのインスタンスで発生し続けるでしょう。ユーザーがカウントダウンを完了していない場合はどうなりますか?私は、実際にはタスクを完了するのに費やされた時間だけを合計することを望んでいません。 – Trlewi

    +0

    @Trlewiはい、それはアプリの起動時にも持続します。タイマーが停止したときにどれだけの時間が経過したかを判断し、私の例では 'newTimeElapsed'の代わりにその番号を使用する必要があります。それはただのプレースホルダだった。ご覧のとおり、私の例では、新しい値を前回の合計値+新しい時刻に設定しました。 – creeperspeak

    関連する問題