2010-08-06 8 views
1

NSFetchedResultsController를 사용하고 있으며 부모 특성에서 쿼리 개수에 문제가 있습니다.
NSFetchedResultsController에서 상위 엔티티의 목록 크기를 계산하는 방법

다음 데이터 모델 'Group', 'Category', 'Item'이라고 가정합니다. '그룹'N '카테고리'

그리고 제로가 있습니다 : - 그룹 '범주'특정 '그룹'
에 속할 수 :
- : - 아이템 종류 모든 항목은
가 이 '범주'에 속하는 카테고리에 그룹이없는 모든 항목을 검색하려고합니다. "category.groups을 @ 계산합니다."

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 
... 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(([email protected] == 0) || category.categoryId == %@)", categoryId]; 
... 

을 그러나 여기에서 작동하지 않습니다
내 코드는 다음과 같다. (NSFetchedRequest에서 잘 작동합니다.)
이 문제를 어떻게 해결할 수 있습니까? 도와주세요 ;;

감사합니다.

답변

0

당신은이 괄호를 열고 닫을 하나 :

[email protected]"(([email protected] == 0) || category.categoryId == %@"... 
+0

죄송합니다. 그것은 단지 내 타이핑 실수입니다. 그러나이 문제는 해결되지 않습니다. 어쨌든 귀하의 회신에 감사드립니다. – likejy

1

관계는 nil이 될 수 있습니다.

((([email protected] == 0) || category.groups == nil) || category.categoryId == %@) 

당신이 직접 목표 - C의 내부에서 기대와 다를 수 있습니다 SQLite는 백엔드에 대해 실행하는 술어의 내부 코드의 해상도입니다. 이처럼 이상한 일이 생길 때 SQL 디버깅을 사용하여 기본 SQL이 무엇인지 확인하고 그에 따라 술어를 조정하는 것이 도움이 될 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 코드가 추락했습니다 ... " 'NSInvalidArgumentException'이라는 캐치되지 않은 예외로 인해 앱이 종료됩니다. 이유 : '여기에 많은 키가 허용되지 않습니다' '. 그건 그렇고, SQL 디버깅을 설정하는 방법? – likejy

+0

항목은 카테고리와 1 대 1의 관계가 있습니까? Apple docs 및 [PragProg의 내 게시물] (http://forums.pragprog.com/forums/90/topics/4649)을 읽으면 디버그를 켤 수 있습니다. –

관련 문제