2017-11-07 12 views
0

Core Dataからイベントの配列を取得します。今度は、結果をフィルタリングして、現在起こっているイベント、つまり直近1時間以内に開始されたイベントを取得したいと思います。IOS/Objective-C:NSPredicateでイベントをフィルタリングし、近い日付を見つけよう

配列をフィルタリングする方法や、NSpredicateで日付を操作する方法については、あまりにも曖昧です。私は現在の1時間前の時間を計算する必要があると思う、最初の時間から短い時間である2番目の時間を計算して、これらの開始時間を比較する必要があると思うが、どうすればよいかわからない。

これは私がこれまで持っているものです。

//fetch from coredata 
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest 
                     error:&error]; 
    NSMutableArray *mutableresults = [results mutableCopy]; 
    NSDate* now = [NSDate date]; 
    NSTimeInterval backSecondsInHour = -60 * 60; 
    NSTimeInterval forwardSecondsInHour = 60 * 60; 

    NSDate* hourAgo = [NSDate dateWithTimeInterval:backSecondsInHour sinceDate:now]; 
    NSDate* hourFromNow = [NSDate dateWithTimeInterval:forwardSecondsInHour sinceDate:now]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"starttime >= %@&&starttime<=%@",hourAgo,hourFromNow]; 
    NSArray *filteredEvents=[mutableresults filteredArrayUsingPredicate:predicate]; 

は、私はここで正しい軌道に乗っているだろうか?何か提案をいただければ幸いです。代わりに、データベースからのすべての時間がちょうどのみ必要なイベントを取得するすべてのイベントを取得

答えて

0

...述語が最後の時間以降のすべてのイベントのためにfetchRequestに適用された場合ここで

は一例です。

NSDate *hourAgo = [[Date date] dateByAddingTimeInterval:-3600]; 

NSFetchRequest *fetchRequest = ..... 
request.predicate = [NSPredicate predicateWithFormat:"starttime >= %@", hourAgo]; 
関連する問題