2012-09-09 3 views
-3

코어 데이터 테이블 뷰가 있고 날짜를 비교하고 있습니다. 현재 사용하는 방법은 if ([todayDate compare: [NSDate date]]==NSOrderedAscending)입니다. 이것은 완벽하지만 느리게 작동합니다. 나는 시간의 차이를 알 필요가 없다. 어떤 도움을 많이 주시면 감사하겠습니다!NSDate와 [NSDate date]를 가장 빠른 방법으로 비교 하시겠습니까?

+0

천천히 무엇이 진술 할 수 있습니까? 그것은'[NSDate date]'또는 비교인가? 느린 것을 어떻게 측정 했습니까? - 많은 요소가있는 루프에서'[NSDate date]'가 필요하다면, 한번만 계산하면 도움이 될 것입니다. –

답변

1

저는 실제로 NSDates 메서드 isEqualToDate:이 무엇을 찾고 있는지 생각합니다. 귀하의 질문에 대답하기 위해 애플 방법으로 나에게 보인다 : 자세한 내용을 보려면 다음 사이트를 방문

NSDate *date1 = ...; 
NSDate *date2 = ...; 

BOOL datesAreEqual = [date1 isEqualToDate:date2]; 

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsdate_Class/Reference/Reference.html

+0

안녕하세요, 도움 주셔서 감사합니다. 그러나 날짜가 동등하거나 그 이상일 경우에만 알려줍니다. 그래도 도와 ​​줘서 고마워! – iDeveloper

+0

문서의 '날짜 비교'섹션을 읽어야합니다. http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html 당신이 내가'- (NSDate *) priorDate : (NSDate *) anotherDate'를 사용할 것임을 알 필요가있는 경우 –

1

하나의 옵션이 실제로 새로운 NSDate 개체를 만들 수 없습니다 할 수 있지만, 비교를 위해 시간 간격을 사용하십시오. 성능에 대해 모르겠지만 시도해 볼만한 가치가있을 수 있습니다.

if ([todayDate timeIntervalSinceReferenceDate] > [NSDate timeIntervalSinceReferenceDate]) { 
... 
} 
0

나는 그것을 측정 한 적이 없다,하지만 당신은 시도 할 수 있습니다 : 결과 (i)는 양 또는 음의 수 있습니다

NSTimeInterval i = [todayDate timeIntervalSinceNow]; 

.

CFDateCompare을 사용해 볼 수도 있습니다.

또는 당신은 당신의 데이터베이스의 시점을 표현하는 또 다른 방법을 고려하는 것이 좋습니다 - 이러한 CFTimeInterval (공통 기준 시간에서 초 수를 나타내는 double)로.

1

당신은 로컬 변수에 현재 날짜 또는 현재 타임 스탬프 기억해야합니다

NSTimeInterval current = [NSDate timeIntervalSinceReferenceDate]; 

을 그리고 모든 비교 나중에이 값을 사용 : C 함수를 사용하여,

myTimestamp = [myDate timeIntervalSinceReferenceDate] 

if (myTimestamp == current) { 
    return NSOrderedSame; 
} else if (myTimestamp > current) { 
    return NSOrderedDescending; 
} else { 
    return NSOrderedAscending; 
} 

또는 빠른 방법 :

// Get the current calendar time as a time_t object. 
time_t time (time_t * timer); 

// Return difference between two times 
double difftime (time_t time2, time_t time1); 
관련 문제