0

私はフレームワークを使用しており、モデルの1つは、フレームワークを使用してDBに保存するDBAccessだけで作成されたレコードの日付を保存します。クエリを使用して取得しようとすると失敗します。過去 7 日間のレコードのみを取得したいので、次のようなクエリを作成しました。[NSDate date]DBAccess

DBResultSet* result = [[[weightModel query] whereWithFormat:@"savedAt >= %@ AND savedAt <= %@", beforeDate, beforeDate] fetch];

beforeDate はどこにありますNSDate

 -(NSDate*)getDateFor:(int)daysBack {
        NSDate* date = [NSDate date];
        NSDateComponents* comps = [[NSDateComponents alloc]init];
        comps.day = -daysBack;
        NSCalendar* calendar = [NSCalendar currentCalendar];
        NSDate* beforeDate = [calendar dateByAddingComponents:comps toDate:date options:0];
        return beforeDate;
    }

NSDate過去7日間の記録を取得する方法を知っている人はいますか?

ただし、これらのレコードが存在することを確認しました

weightModel* weightRecord = [[[weightModel query] fetch] objectAtIndex:i];
        [dates weightRecord.savedAt];

そしてそれを印刷しました。

4

1 に答える 1

0

最初に、日付の作成とクエリの方法に問題はないようだという質問に答えました。ただし、小さな微妙な点が 1 つあります。それは、パラメーターが同じ日付値である日付>= && <=をクエリしていたことです。

オブジェクトNSDateの精度が 1 秒を超える場合、記録は 7 日前とまったく同じミリ秒で存在していなければならなかったことを意味します (*要出典、実際の精度は不明)。結果が返される可能性はほとんどありません。

あなたがする必要があるのは、一日の始まりと終わりを返す日付関数を作成することです。

または、SQLite datetime関数を使用してこれを行うこともできます。ただし、obj-c 内に保持することをお勧めします。

ありがとうエイドリアン

于 2015-09-02T08:07:06.770 に答える