2012-05-10 4 views
0

핵심 데이터에서 레코드를 가져 와서 NSMutableArray으로 채우십시오. 이제 아래 코드로 필터링하려고하지만 제대로 작동하지 않습니다. 어떻게해야합니까?NSMutableArray NSPredicate 필터

[array filterUsingPredicate:[NSPredicate predicateWithFormat:@"date==%@",date1 ]]; 
//date = a field with format NSDate in core data 
//date1 = NSDate 
+0

너는 그 이상을 주어야 할 것이다. 어떤 방식으로 결과가 부정확합니까? – Tommy

+0

배열에 결과를 확인하기 전에이 필터를 사용하면 결과가 정확하며이 코드를 사용하면 배열에는 배열이 3 개가 있어야하지만 배열 ([배열 개수] = 0)에 레코드가 없습니다 –

+1

확실한 후속 질문 - 확실합니다 날짜가 정확히 동일합니까? NSDate는 최소한 두 번째 단계까지 정확하고 정확한 평등을 테스트하고 있습니다. 필터링하기 전에 배열의 NSLog를 표시하고 date1을 사용하면 도움이 될 것입니다. – Tommy

답변

0

아마 당신은 시간과 날짜를 입력하고 date1와 배열을 필터링 할 때 date1의 시간이 핵심 데이터에이 코드에서

모양을 저장하고 입력 해당 날짜에 동일하지 않은 그 때문에입니다 날짜가없는 날짜

NSDate *dateTime=[NSDate date]; 
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; 
NSDateComponents *components = [[NSDateComponents alloc] init]; 
components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit 
         fromDate:dateTime]; 
NSDate *dateOnly = [calendar dateFromComponents:components]; 
1

왜 당신은 당신의 NSFetchRequest에 술어를 사용하고 당신이 필요로하는 레코드 만에 채워있는 NSArray를 유지하지 않을까요?

+0

나는 그것을했고 다시 그것을 걸러 낼 필요가있다. –

+0

술어를 변경하고 가져 오기 요청을 다시 시작하십시오. –

관련 문제