2010-12-10 2 views
0

iPhone CoreData funky fetch-request : 내 제품의 고유 카테고리 코드 배열을 검색하는 함수를 작성하고 싶습니다. 엔티티 "제품"이 있고 필드 (속성) 카테고리가 있습니다. 물론 범주는 범주 엔터티와의 관계입니다.CoreData - subEntity ....의 고유 값?

이 경우 제 기능 :

- (NSArray *)uniqueCategoriesWithQuery:(NSString *)query { 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:[self managedObjectContext]];  
NSDictionary *entityProperties = [entity propertiesByName]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:entity]; 
[request setReturnsDistinctResults:YES]; 
[request setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"Code"]]]; 
[request setResultType:NSDictionaryResultType]; 
[request setIncludesSubentities:YES]; 
[request setIncludesPropertyValues:YES]; 
NSError *fetchError = nil; 
NSArray *result = [[self managedObjectContext] executeFetchRequest:request error:&fetchError]; 
DebugLog(@"%@", result); 
if (fetchError == nil && [result count] > 0) { 
    return result; 
} 
return nil; 

}

MyResult : 2010-12-10 05 : 55 : 33.683 IAPP [3453 : 307] - [ShoppingHelper uniqueCategoriesWithQuery :] [라인 1193] ( { 카테고리 = "0x495a200"; }, { 카테고리 = "0x4959ce0";} )

,

코드는 정상적으로 작동하지만 결과를 전혀 사용할 수 없습니다. 나는 나의 카테고리를 가지고있다. 그러나 ID '대신에 NSStrings .. 어떻게 그것을 소비 하는가?

어쩌면 내가 사용해야합니다 : [요청 setPropertiesToFetch : [NSArray arrayWithObject : [entityProperties objectForKey : @ "Categories.Code"]]]];

Distinct NSDictionary에서 NSString을 가져 오려면?

또는

카테고리 찾아보기 ID 찾는 방법 -

답변

0

NSDictionaryResultType을 사용하지 않고 관리되는 개체를 반환하는 경우 반환 된 Product 개체의 적절한 속성을 통해 Category 개체에 액세스 할 수 있습니다. 거기에서 각 범주에서 필요한 정보를 얻을 수 있습니다. 하지만 이렇게하고 결과 집합이 매우 큰 경우 set the fetch batch size을 원할 수 있습니다.

+0

감사합니다.하지만 관리되는 개체를 반환하는 경우 "setReturnsDistinctResults : YES"가 작동하지 않습니다. 모든 제품을 가져옵니다. 필터링 된 제품 테이블에 대한 고유 한 카테고리가 필요합니다. 뭔가 같은 SELECT DISTINCT 범주 FROM 제품 '% mylikeString %'같은 ProductName WHERE ProductName. – Cezar

+0

아, 네, 죄송합니다. –