核心数据:获取属性的最低值
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 ???
有什么建议吗?谢谢!
【问题讨论】:
当您使用您创建的NSFetchRequest
在context
上调用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]
【讨论】:
以上是关于核心数据:获取属性的最低值的主要内容,如果未能解决你的问题,请参考以下文章