2010-12-10 100 views
0

iPhone CoreData funky fetch-request: 我想构建函数来检索我的产品的Unique-CategoryCodes数组 我有Entity“Product”并且有一个字段(Property)类别。 当然,类别是与类别实体的关系。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接入点内部协议[3453:307] - [ShoppingHelper uniqueCategoriesWithQuery:] [1193线] ( { 类别= “0x495a200”; },{ 类别 = “0x4959ce0”; } )

代码运行良好,但我根本无法使用结果。我有我的类别...但ID'而不是NSStrings ..如何消费它?可能我应该使用: [请求setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:[“Categories.Code”]]];

获取不同NSDictionary中的NSString?

寻找类别BY ID - 怎么做?

回答

0

如果您避免使用NSDictionaryResultType,而是让它返回管理对象,则可以通过返回的Product对象上的相应属性访问Category对象。从那里,你可以从每个类别获得你需要的任何信息。虽然如果你这样做,并且有很大的结果集,你可能想要set the fetch batch size

+0

谢谢,但如果我返回管理对象“setReturnsDistinctResults:YES”不起作用 - 我得到所有的产品。我只需要过滤产品表的唯一类别。像SELECT DISTINCT类似于产品名称类似于'%mylikeString%'的产品。 – Cezar 2010-12-10 14:05:40