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 ???
}
有什么建议吗?谢谢!
答案 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]