【问题标题】:How to fetch unique field values (song_type) from core data如何从核心数据中获取唯一字段值(song_type)
【发布时间】: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:'

【问题讨论】:

    标签: iphone ios core-data ios4


    【解决方案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 以供我理解
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    相关资源
    最近更新 更多