核心数据:获取属性的最低值

Posted

技术标签:

【中文标题】核心数据:获取属性的最低值【英文标题】:Core Data: get lowest value of an attribute 【发布时间】:2013-11-01 19:06:24 【问题描述】:

对于 Core Data 来说还是有些新意,并且遇到了一个问题。我在一个名为 index 的托管对象中有一个 int 属性。我需要遍历所有托管对象并确定最高索引值。我在排序描述符中选择了降序,以便可以访问索引 0 处的数组对象。我知道这应该很简单,但这是我当前的代码:

+(NSInteger)getHighIndexNumber
    NSManagedObjectContext *context = [[FavesDataModel sharedDataModel] mainContext];
    NSFetchRequest *fetchReq = [[NSFetchRequest alloc] init];

    NSSortDescriptor *sortByIndex = [[NSSortDescriptor alloc] initWithKey:@"index" ascending:NO];
    [fetchReq setSortDescriptors:[NSArray arrayWithObject:sortByIndex]];

    NSEntityDescription *entity = [NSEntityDescription entityForName:[Favorite entityName] inManagedObjectContext:context];
    [fetchReq setEntity:entity];

    return ???
 

有什么建议吗?谢谢!

【问题讨论】:

当您使用您创建的NSFetchRequestcontext 上调用executeFetchRequest:error: 时,会发生什么?这其中的哪一部分没有按您预期的方式工作? 【参考方案1】:

您的代码看起来没问题,所以只需执行获取请求:

NSError *error;
NSArray *objects = [context executeFetchRequest:fetchReq error:&error];
if (objects == nil) 
    // An error occurred, report error and return nil?
    NSLog(...);
    return nil;
 else if ([objects count] == 0) 
    // No object found, return nil?
    return nil;
 else 
    // At least one object found, return the first one:
    return objects[0];

注意,由于你只需要第一个元素,你可以通过设置来提高性能

[fetchReq setFetchLimit:1]

【讨论】:

以上是关于核心数据:获取属性的最低值的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:获取关系属性

核心数据获取唯一属性

通过布尔属性获取核心数据对象

核心数据获取请求关系属性谓词

关系属性的核心数据获取请求

如何获取核心数据属性中所有条目的总和?