1

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

有什么建议么?谢谢!

4

1 回答 1

3

您的代码看起来不错,所以只需执行 fetch 请求:

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]
于 2013-11-01T19:50:35.450 回答