2013-02-13 2 views
0

매우 중요한 레코드 집합을 반환하면서 핵심 데이터 데이터베이스를 검색하려고합니다.복잡한 핵심 데이터 검색

firstName (NSString) 
lastName (NSString) 
dateOfBirth (NSDate) 
updatedAt (NSDate) 
weight (NSNumber) 
height (NSNumber) 

나는 독특한 firstName, lastNamedateOfBirth 값을 사용자의 목록을 얻을 수 있지만, 최신 이러한 각 사용자의 전체 기록을 반환 할 :

내 모델은 다음과 같이 보입니다 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 

을,하지만 난 궁금했다 이것을 도울 수있는 "바로 가기"가있었습니다. 내가 updatedAt 값을 얻는 데 관심이 없다면 [fetchRequest setReturnsDistinctResults:YES]을 사용할 수 있지만 반입 할 속성에 updatedAt을 포함하면이 모든 레코드가 본질적으로 반환됩니다. 나는 매우 커서 (10,000 레코드 이상) 될 수 있기 때문에 전체 데이터베이스를 NSArray에로드하는 것에 대해 걱정이됩니다.

답변

0

먼저 데이터 모델을 수정해야한다고 생각합니다. 이름, 성 및 생년월일만으로 고유 ID (레코드의 10,000 개 중)를 안정적으로 대체하기에 충분하지 않습니다.

두 번째로 Person 엔티티를 만들고이 엔티티의 동일한 레코드를 사용하여 updated 날짜 속성이있는 일종의 이벤트와 연결해야합니다.

훨씬 강력하고 견고한이 구조를 사용하면 쿼리가 간단 해집니다. 방금 모든 사람을 가져옵니다. 각 사람마다 필요한 경우 가장 최근의 이벤트를 선택하십시오.

Event *latestEvent = [person.events [email protected]"@max.updated"]; 
관련 문제