2011-03-07 2 views
5

어쩌면 도움을 줄 수 있습니다. 오류가있는iOS NSDate 핵심 데이터 비교 가져 오기 요청이 작동하지 않습니다.

-(NSMutableArray *)returnItemsWithName:(NSString *)name{ 

    NSFetchRequest *fetch=[[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity=[NSEntityDescription entityForName:@"XYZ" inManagedObjectContext:[self managedObjectContext]]; 
    [fetch setEntity:entity]; 
    NSDate *sevenDaysAgo = [appDelegate dateByAddingDays:-7 toDate:[NSDate date]]; 
NSPredicate *pred= [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"originTime >= %@", sevenDaysAgo]]; 
    [fetch setPredicate:pred]; 
    NSError *fetchError=nil; 
    NSMutableArray *fetchedObjs = [[[self managedObjectContext] executeFetchRequest:fetch error:&fetchError] retain]; 
    if (fetchError!=nil) { 
     return nil; 
    } 

    return fetchedObjs; 

} 

라인이

fetchedObjs = [[[self managedObjectContext] executeFetchRequest:fetch error:&fetchError] retain]; 

충돌 : 응용 프로그램을 종료

* 인해 캐치되지 않는 예외 'NSInvalidArgumentException'에 이유 :이 코드를 잘못 무엇 '할 수 없음 형식 문자열을 구문 분석합니다. "originTime> = 2011-02-28 21:07:37 +0000" '

모든 개체가 nil이 아니며 originDat도 아닙니다.

[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"originTime >= %@", sevenDaysAgo]]; 

predicateWithFormat:이미이 형식 문자열을 원한다 : 전자는

+0

"originDate"또는 "originTime"필드의 이름입니까? – Anomie

답변

10

귀하의 문제가이되는 CD 데이터베이스에있는 NSDate입니다. 발견 한 것처럼 불필요한 일을하는 것이 잘못되었습니다. 그래도 쉽게 해결할 수 있습니다.

[NSPredicate predicateWithFormat:@"originTime >= %@", sevenDaysAgo]; 

잘 작동합니다.

+0

은 NSDate 유형의 속성 인 'originTime'입니까? 그렇다면 형식이있는 술어는 어떻게 작동 했습니까? 'laterDate :'함수를 사용해서는 안됩니까? '>'및 '<'연산자가 날짜에 대해 작동합니까? – iosMentalist