2017-11-07 5 views
0

코어 데이터에서 이벤트 배열을 가져옵니다. 차례대로, 나는 현재 발생하고있는 이벤트, 즉 지난 1 시간 이내에 시작된 이벤트를 얻기 위해 결과를 필터링하려고합니다.IOS/Objective-C : NSPredicate를 사용하는 이벤트 배열을 필터링하여 가까운 날짜를 찾습니다.

나는 배열을 필터링하는 방법에 대해 조금 퍼지기도하고 NSpredicate에서 날짜로 작업하는 방법을 더 잘 모르는 경우도 있습니다. 나는 현재보다 1 시간 앞선 시간을 계산할 필요가 있다고 생각합니다. 즉, futrue에서 짧은 시간이 걸리는 초를 계산 한 다음 시작 시간을 비교해 볼 필요가 있습니다.

//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]; 
관련 문제