CoreData - 来自子实体的唯一值......?

Posted

技术标签:

【中文标题】CoreData - 来自子实体的唯一值......?【英文标题】:CoreData - Unique Values from subEntity....? 【发布时间】:2010-12-10 07:10:29 【问题描述】:

iPhone CoreData 时髦的获取请求: 我想构建函数来检索我的产品的 Unique-CategoryCodes 数组 我有实体“产品”,并且有一个字段(属性)类别。 当然 Category 是与 Categories 实体的关系。

如果我的功能是这样的:

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

我的结果: 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 中的 NSStrings?

按 ID 查找类别 - 怎么做?

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢,但如果我返回托管对象,“setReturnsDistinctResults:YES”不起作用 - 我得到了所有产品。我只需要过滤产品表的唯一类别。 SELECT DISTINCT Category FROM Products WHERE ProductName like '%mylikeString%'。

以上是关于CoreData - 来自子实体的唯一值......?的主要内容,如果未能解决你的问题,请参考以下文章

CoreData 可以返回唯一的实体属性吗?

如何更新CoreData中另一个实体的子实体

获取CoreData中所有实体的所有子实体

Restkit 是不是通过 CoreData Sqlite 处理实体唯一性?

Coredata Xcode 8中的“在实体的唯一性约束属性中,逗号不是有效属性”

CoreData(IOS)多列的唯一约束?