Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 核心数据的独特价值_Iphone_Cocoa_Core Data - Fatal编程技术网

Iphone 核心数据的独特价值

Iphone 核心数据的独特价值,iphone,cocoa,core-data,Iphone,Cocoa,Core Data,我有一个基于核心数据的应用程序,可以管理汽车经销商的记录。每个记录存储经销商的地址,这些地址分为地址行1、地址行2、城市、州和邮政编码>组件,每个组件都作为字符串存储在数据存储中 我想向用户展示一个拥有经销商的城市列表,因此我试图弄清楚是否有可能获得已输入商店的每个唯一城市名称的列表。换句话说,是否可以对所有经销商记录发出某种查询,以返回不同城市名称的列表 我知道如何使用SQL查询轻松地做到这一点,但是(如何)在核心数据中做到这一点 非常感谢 你说得对,没有一种“简单”的方法来处理核心数据,因为

我有一个基于核心数据的应用程序,可以管理汽车经销商的记录。每个记录存储经销商的地址,这些地址分为
地址行1
地址行2
城市
邮政编码>组件,每个组件都作为字符串存储在数据存储中

我想向用户展示一个拥有经销商的城市列表,因此我试图弄清楚是否有可能获得已输入商店的每个唯一城市名称的列表。换句话说,是否可以对所有经销商记录发出某种查询,以返回不同城市名称的列表

我知道如何使用SQL查询轻松地做到这一点,但是(如何)在核心数据中做到这一点


非常感谢

你说得对,没有一种“简单”的方法来处理核心数据,因为核心数据不是数据库。然而,这是可能的。以下是总体思路:

  • 通过
    NSFetchRequest
    获取所有经销商对象。为了简化查询,可以将fetch请求设置为仅获取
    city
    属性
  • 执行
    NSArray*uniqueCities=[fetchedDealers valueForKeyPath:@“@distinctUnionOfObjects.city”]

  • 确保一组独特事物的快速方法是使用NSSet。一旦你有了关于城市的查询结果,就拿着你的NSArray去做吧

    NSSet* uniqueResults = [NSSet setWithArray:resultsArray];
    

    如果更方便的话,您可以将集合转换为另一个集合类,或者只使用对象枚举器来处理所有集合类。我不知道这种方法或Dave DeLong的valueForKeyPath方法是否更有效。

    核心数据可以选择获取不同的记录。不推荐使用NSArray和NSSET获得唯一结果的方法

    [fetchRequest setResultType:NSDictionaryResultType];
    NSDictionary *entityProperties = [entity propertiesByName];
    [fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"<<yourattrib>"]]];
    [fetchRequest setReturnsDistinctResults:YES];
    
    [fetchRequest setResultType:NSDictionaryResultType];
    NSDictionary*entityProperties=[entity Properties ByName];
    [fetchRequest SetPropertiesTotch:[NSArray arrayWithObject:[entityProperties objectForKey:@]