2010-12-10 25 views
0

iPhone CoreData funky fetch-request: Je veux construire la fonction pour récupérer le tableau de Unique-CategoryCodes pour mes produits J'ai Entity "Product" et il y a un champ (Property) Category. Bien sûr, la catégorie est la relation avec l'entité des catégories.CoreData - Valeurs uniques de subEntity ....?

Ce si ma fonction:

- (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; 

}

MonRésultat: 2010-12-10 05: 55: 33,683 iApp [3453: 307] - [ShoppingHelper uniqueCategoriesWithQuery:] [Ligne 1193] ( { Catégorie = "0x495a200"; }, { Catégorie = "0x4959ce0";} )

Le code fonctionne bien mais je ne peux pas utiliser les résultats du tout. J'ai mes catégories ... mais ID 'au lieu de NSStrings .. Comment le consommer?

peut-être que je devrais utiliser: [request setPropertiesToFetch: [NSArray arrayWithObject: [entityProperties objectForKey: @ "Catégories.Code"]]];

pour obtenir les NSStrings dans le NSDictionary Distinct?

OU

find Catégorie PAR ID - Comment faire?

Répondre

0

Si vous évitez d'utiliser NSDictionaryResultType et que vous le laissez renvoyer des objets gérés, vous pouvez simplement accéder aux objets Category via la propriété appropriée sur les objets Product renvoyés. De là, vous pouvez obtenir toutes les informations dont vous avez besoin de chaque catégorie. Bien que, si vous le faites, et avez un très grand ensemble de résultats, vous pouvez vouloir set the fetch batch size.

+0

Merci, mais Si je retourne des objets gérés, le "setReturnsDistinctResults: YES" ne fonctionne pas - je reçois tous les produits. J'ai juste besoin de catégories uniques pour la table des produits filtrés. Quelque chose comme SELECT DISTINCT Catégorie FROM Produits WHERE ProductName like '% mylikeString%'. – Cezar

+0

Ah, oui, je suis désolé. –