私は、スケジュールのローテーションでクラスのリストを自動的に表示するアプリケーションを作っています。私は基本的な機能は完備していますが、私の目的は最初の打ち上げ時に回転数を入力し、月曜日から金曜日までバックグラウンドで増分させ、ではなく、週末にです。たとえば、ユーザーが金曜日にアプリをダウンロードしてその日を5日目に入力すると、月曜日まで5日間滞在してから6日目になります。ユーザーがいない場合は更新することもできますアプリを数日間開いてください。ここに私の現在のコードは次のとおりです。毎日午前0時にNSUserDefaultsの数字を増やします(週末を除く)
- (void)checkIfDayChanged {
NSDate *open = [userDefaults objectForKey:@"openDate"];
NSDate *close = [userDefaults objectForKey:@"closeDate"];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSString *openString = [dateFormat stringFromDate:open];
NSString *closeString = [dateFormat stringFromDate:close];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
BOOL weekend = [gregorian isDateInWeekend:open];
NSTimeInterval distanceBetweenDates = [close timeIntervalSinceDate:open];
NSInteger days = ((NSInteger)distanceBetweenDates)/(60 * 60 * 24);
if (![openString isEqualToString:closeString]) {
if (!weekend) {
[userDefaults setInteger:[userDefaults integerForKey:@"dayNumber"] + days forKey:@"dayNumber"];
[userDefaults synchronize];
}
}
問題はアプリを開いたときに私の理解に、iOSのはこれだけを確認することができるということです、ない背景には、これは正しいでしょうか?また、週末の値を増やさないことも考慮していません。
あなたは私たちがこのコードで間違っているものを推測させるされていますか?私はあなたに教えてください。 –
@意味 - ごめんなさい申し訳ありません、私は今日早くこれを書きました。私は主な2つの問題を説明するために編集しました。 – anthonya1999
今はっきりしています。なぜあなたは、アプリケーションが開いていないときに更新したいですか?つまり、ユーザーがアプリを再び開いたときに次のローテーション番号を計算することができます。どのように通知されますか? –