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

时间:2013-11-01 19:06:25

标签: ios iphone xcode core-data nsmanagedobjectcontext

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 ???
} 

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:3)

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

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]