关于iphone:如何选择核心数据中具有最大值的条目?

how do you select the entry with the max value in coredata?

例如,我有一个托管对象保存在coredata中,比如

@接口团队:NSManagedObject

@属性(非原子)nsnumber*teamid;

@结束

我已经成功地在coredata中保存了一些具有唯一teamid的团队,现在我想获取具有max teamid的团队,我该怎么做?

我曾经让所有的团队进行排序,但是这样做会带来很大的开销来生成提取的数组,有什么更好的主意吗?


使用NSExpression是实现这一目标的方法之一。在《核心数据编程指南》中的Fetching Specific Values一节中,我们用一个完整的例子来描述这一点。


  • 使用nsfetchrequests的-setSortDescriptors:方法为fetch请求使用NSSortDescriptor来指定获取对象的顺序。

  • 使用nsfetchrequest的-setFetchLimit:指定提取限制,以仅获取第一个对象。


  • 用户465 191,

    我要做的是:

    1
    2
    3
    4
    5
    NSNumber *max = [teams valueForKeyPath: @"@max.teamID"];

    NSPredicate *p = [NSPredicate predicateWithFormat: @"%K == %@", @"teamID", max];

    Team *team = [[teams filteredSetUsingPredicate: p] anyObject];

    它比我想要的要笨重,但它确实有效。

    安得烈