2010-06-21 4 views
0

NSManagedObject을 생성하고 sqlite3 백업 저장소에 저장하는 데 사용하는 웹 서비스에서 가져온 일부 XML 데이터가 있습니다. 내 앱에서 NSPredicate 개체를 사용하여이 데이터를 다른 필드와 함께 쿼리합니다. 내가 가지고있는 데이터는 2009 년 4 월부터 2010 년 8 월까지 매일 (SOAP 웹 서비스에서 검색 한 원시 XML에 따라) 기록이 있습니다. 나는 성공적으로이 같은 NSPredicate 쿼리를 사용하여 NSManagedObject의를 검색 할 수 있어요NSPredicate에서 날짜를 쿼리하는 것이 올바르지 않은 것 같습니다. 미래의 날짜와 일치 할 수 없습니다.

NSCalendar *cal = [NSCalendar currentCalendar]; 

NSDate *today = [cal dateFromComponents:[cal components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit 
               fromDate:[NSDate date]]]; 
NSDate *day1ahead = [cal dateFromComponents:[cal components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit 
                fromDate:[NSDate dateWithTimeIntervalSinceNow:kSecondsPerDay]]]; 
NSDate *day2ahead = [cal dateFromComponents:[cal components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit 
                fromDate:[NSDate dateWithTimeIntervalSinceNOw:kSecondsPerDay*2]]]; 

: 여기

조금 설정이다, 나는 다음과 같은 쿼리를 수행 할 때, 그러나

NSPredicate *todaysData = [NSPredicate predicateWithFormat:@"(StartDate >= %@) AND (StartDate <= %@)", today, day1ahead]; 

를 I bupkis를 얻으십시오.

NSPredicate *tomorrowsData = [NSPredicate predicateWithFormat:@"(StartDate >= %@) AND (StartDate <= %@)", day1ahead, day2ahead]; 
내가 XML 데이터, 그리고 거기에 쿼리려고하는 미래의 날짜를 확인, 나는이 같은 직접 sqlite3를 백업 저장소를 확인

:의

sqlite> select datetime(startdate, "unixepoch", "31 years") from mydatatable; 

결과 이 간단한 쿼리는 내가 미래의 날짜가 있음을 보여줍니다. 결과는 현재의 일 이외에는 아무 것도 포함하지 않았다

NSPredicate *allFuture = [NSPredicate predicateWithFormat:@"(StartDate >= %@)", today]; 

:

나는 심지어이 같은 쿼리를 시도했다. 그것은 백킹 스토어에있는 것 같아서 NSPredicate 객체가 내가 기대했던 방식으로 작동하지 않는 이유에 대해 약간의 손실이 있습니다.

CoreData에서 생성 한 실제 SQL 문을 볼 수있는 방법이 있습니까? sqlite3 db에서 잘못된 데이터를보고 있습니까? 내가 놓친 게 분명해?

답변

1

CoreData에서 생성 된 실제 SQL 문을 볼 수있는 방법이 있습니까?

예. Xcode의 Active Executable 설정에서 "실행시 전달할 인수"목록에 -com.apple.CoreData.SQLDebug 1을 추가하고 체크 표시를 선택하십시오. 핵심 데이터는 SQL 쿼리를 NSLog합니다.

+1

감사! 나는 문제가 실제로 내 쿼리를 실행하는 배열에 대한 올바른 데이터를로드하지 않았다는 것을 알았습니다. 질문을 삭제하려고했으나 좋은 대답입니다. –

관련 문제