如何从核心数据中获取唯一字段值(song_type)

Posted

技术标签:

【中文标题】如何从核心数据中获取唯一字段值(song_type)【英文标题】:How to fetch unique field values (song_type) from core data 【发布时间】:2012-07-03 08:16:04 【问题描述】:

我想知道如何从核心数据中获取唯一字段值 (song_type)。

我有下面的代码

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Songs" inManagedObjectContext:myManagedObjectContext];

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
    [fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:@"song_type"]]; 
    [fetchRequest setEntity:entity];

    NSError *aError;

    NSMutableArray *fetchedResultsArray = [[myManagedObjectContext executeFetchRequest:fetchRequest error:&aError]mutableCopy];

    if(! fetchedResultsArray )
        NSLog(@"EEEERRROR");
    
    else 
        NSLog(@"fetched %d", [fetchedResultsArray count]);
    

    [fetchedResultsArray release];
    [fetchRequest release];

我收到以下错误

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'无效的 keypath song_type 传递给 setPropertiesToFetch:'

【问题讨论】:

【参考方案1】:

设置以下 2 个属性,您就完成了。

fetchRequest.returnsDistinctResults = YES;
fetchRequest.resultType = NSDictionaryResultType;

希望这会有所帮助。

编辑

NSFetchRequest *fetchRequest= [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Songs" inManagedObjectContext:myManagedObjectContext];

//Take properties dictionary
NSDictionary *entityProperties = [entity propertiesByName];
[fetchRequest setEntity:entity];
[fetchRequest setReturnsDistinctResults:YES];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"song_type"]]];
NSArray * result = [myManagedObjectContext executeFetchRequest:fetchRequest error:nil];

【讨论】:

我试过但仍然得到相同的错误终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:'传递给 setPropertiesToFetch 的无效 keypath song_type:'.请帮助 当我这样运行时没有错误。NSEntityDescription *entity = [NSEntityDescription entityForName:@"Songs" inManagedObjectContext:myManagedObjectContext]; NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init]; [fetchRequest setEntity:实体]; NSError *aError;NSMutableArray *fetchedResultsArray = [[myManagedObjectContext executeFetchRequest:fetchRequest error:&aError]mutableCopy]; if(!fetchedResultsArray) else NSLog(@"fetched %d", [fetchedResultsArray count]); [fetchedResultsArray 发布]; [fetchRequest 发布]; 您能否在您的问题中发布 Songs Modal 类。 非常感谢,它有效。顺便说一下,请您解释一下代码 sn-p 以供我理解 让我们continue this discussion in chat

以上是关于如何从核心数据中获取唯一字段值(song_type)的主要内容,如果未能解决你的问题,请参考以下文章

如何通过匹配一些冗余字段从 3 个表中获取唯一数据?

如何查询按核心数据中唯一值分组的值?

MySQL 选择唯一的排序字段值

从获取中排除属性/字段 - 核心数据

如何使用 XML::XPath 获取属性?

如何从唯一 id 基础 varchar 数据类型中获取值