2016-07-25 9 views
2

私は、毎日の始めにリセットしたいユーザー統計を追跡する変数を持っています。どうやってやるの? アプリケーションはバックグラウンドで実行することが許可されていないため、アプリケーションがアクティブになるたびにチェックを行う必要があるようですが、変数をリセットする方法はわかりません。これは私が使用したい機能です:毎日の始めに変数をリセットするにはどうすればよいですか?

let beginingOfDay = NSCalendar.currentCalendar().startOfDayForDate(NSDate()) 
    func resetCurrentTime(){ 

    // Date comparision to compare current date and begining of the day. 
    let dateComparisionResult:NSComparisonResult = NSDate().compare(beginingOfDay) 

    if dateComparisionResult == NSComparisonResult.OrderedDescending || dateComparisionResult == NSComparisonResult.OrderedSame { 
     // Current date is greater or equal to end date. 
     currentTime = 0 //reset the time tracker 
    } 
} 

私は、アプリケーションの起動時にチェックするために、この機能を使用していたが、問題は、アプリケーションが多くの時間の日を起動することができたということです。ユーザーがアプリケーションを使用している場合、またはアプリケーションがアクティブになった場合、またはその日に初めて起動された場合は、1日の初めに変数を1回だけリセットできますか? ありがとう

答えて

4

この値をデフォルトでユーザーに保存できます。

だから流れは以下の通りです:

  1. アプリが起動したり、ユーザーのデフォルト値で変数の値が現在の日と同じであるかどうかを確認アクティブになっている場合(例:25/07/2016)、何もしないでください。
  2. 値が異なる場合は、ユーザーのデフォルト値を現在の日付に更新します。

アプリが実行されていると、日付が変更された場合、あなたはこの通知に加入して、変数の値を更新することができますが: UIApplicationSignificantTimeChangeNotification

+0

私は通知が存在することを知りませんでした。システムによっていつ投稿されますか? – irkinosor

+0

ドキュメントから:時間が大幅に変更されたときに掲示されます。たとえば、新しい日(深夜)、キャリア時間の更新、夏時間の変更などです。 – fiks

+0

キャリアアップデートとはどのような意味があり、どのようにタイミングに影響しますか?絶対的な深夜の午前0時にのみ発射するより制限された通知がありますか? – irkinosor

関連する問題