核心数据的独特价值

Joh*_*pak 4 iphone cocoa core-data

我有一个基于核心数据的应用程序,管理汽车经销商的记录.各唱片店的销售店的地址,这是分成addressLine1,addressLine2,city,state,和zip组件,每个存储在数据存储的字符串.

我想向用户提供一个有经销商的城市列表,所以我想弄清楚是否可以获得已经输入商店的每个唯一城市名称的列表.换句话说,是否可以针对将返回不同城市名称列表的所有经销商记录发出某种查询?

我会知道如何使用SQL查询轻松完成此操作,但(如何)在Core Data中完成此操作?

非常感谢!

pal*_*aja 7

核心数据可以选择获得不同的记录.不建议使用NSArray和NSSets获取唯一结果的方法.

[fetchRequest setResultType:NSDictionaryResultType];
NSDictionary *entityProperties = [entity propertiesByName];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"<<yourattrib>"]]];
[fetchRequest setReturnsDistinctResults:YES];
Run Code Online (Sandbox Code Playgroud)

请参阅Apple文档并查看如何在Core Data中获取不同值的答案


Dav*_*ong 5

你说对了,Core Data没有"简单"的方法,因为Core Data不是数据库.但是,这是可能的.这是一般的想法:

  1. 通过一个获取所有经销商对象NSFetchRequest.要简化查询,可以将获取请求设置为仅获取city属性.
  2. 执行 NSArray * uniqueCities = [fetchedDealers valueForKeyPath:@"@distinctUnionOfObjects.city"];