我正在尝试搜索我的核心数据数据库,返回一组非常具体的记录。
我的模型看起来像这样:
firstName (NSString)
lastName (NSString)
dateOfBirth (NSDate)
updatedAt (NSDate)
weight (NSNumber)
height (NSNumber)
我希望获得具有唯一firstName
,lastName
和dateOfBirth
值的用户列表,但只返回每个用户的完整记录{{1价值。
因此,对于数据库如:
updatedAt
我会得到一个数组:
firstName: Jim, lastName: Brown, dateOfBirth: 1/1/2012, updatedAt: 1/1/2012, weight: 100, height: 100
firstName: Jim, lastName: Brown, dateOfBirth: 1/1/2012, updatedAt: 2/1/2012, weight: 120, height: 100
firstName: Joe, lastName: Smith, dateOfBirth: 1/1/2012, updatedAt: 1/1/2012, weight: 100, height: 100
firstName: Joe, lastName: Smith, dateOfBirth: 2/1/2012, updatedAt: 1/1/2012, weight: 100, height: 100
我知道我可以跑来跑去执行一大堆不同的过滤操作,但我想知道是否有任何"快捷方式"这可能会有所帮助。如果我对获取firstName: Jim, lastName: Brown, dateOfBirth: 1/1/2012, updatedAt: 2/1/2012, weight: 120, height: 100
firstName: Joe, lastName: Smith, dateOfBirth: 1/1/2012, updatedAt: 1/1/2012, weight: 100, height: 100
firstName: Joe, lastName: Smith, dateOfBirth: 2/1/2012, updatedAt: 1/1/2012, weight: 100, height: 100
值不感兴趣,我可以使用[fetchRequest setReturnsDistinctResults:YES]
,但如果我在要获取的属性中包含updatedAt
,这将基本上返回所有记录。我担心将整个数据库加载到updatedAt
,因为它可能非常大(> 10,000条记录)。
答案 0 :(得分:0)
首先,我认为你应该修改你的数据模型。名字,姓氏和出生日期不足以可靠地替换唯一ID(超过10,000个记录)。
其次,您应该创建一个Person实体,并使用该实体的相同记录与某种带有updated
日期属性的事件相关联。
有了这个更加健壮的结构,您的查询变得微不足道。你只需要取得所有人。对于每个人,如果需要,请选择最近的事件。
Event *latestEvent = [person.events valueForKeyPath@"@max.updated"];