0

내 섹션 이름에 대해 일대 다 관계에서 값 집합을 가져 오려고합니다. 내 fetchRequest 엔티티가 단일 엔티티로 설정되어 있으며 sectionNameKeyPath에 @ "to_many.attribute1"을 (예를 들어) 사용하고 싶습니다. 그러나, 나는 그 개체의 특정 하위 집합을 사용하여 개체를 정렬하기를 원합니다.일대 다 관계의 하위 집합에서 sectionNameKeyPath를 얻으려면 어떻게해야합니까?

sectionNameKeyPath에 조건자를 추가하는 방법이 있습니까?

아니면 데이터가 더 쉽게 액세스 할 수 있도록 내 데이터 모델을 다시 만들어야 할까?

답변

0

내 sectionNameKeyPath가 사소한 것을 참조해야 할 때 사용한 한 가지 옵션은 모델에 새 속성을 추가하고 Transient로 표시하는 것입니다.

그런 다음 규칙에 따라 필드를 계산하는 getter가있는 관리되는 개체에 범주를 추가 할 수 있습니다.

@implementation MyObject (SectionKeyPathAdditions) 

-(NSDate *)toManyAttribute1Date // This is the new transient attribute name 
{ 
    NSDate *dynamicReturnDate = [NSDate date]; 
    // use app logic to grab the subset of valid dates from attribute1 
    return dynamicReturnDate; 
} 
+0

유망한 것 같습니다. 고맙습니다! – Sage

+0

이 방법이 효과적 일지 몰라도 많은 양의 데이터를 처리하는 데 자원 집약적 일 수 있습니다. 일시적인 메서드는 일시적인 값을 계산하기 전에 개체를 인스턴스화해야합니다. – TechZen

0

귀하의 술어는 것 같은 뭔가 :

ALL to_many.attribute1=="something" 

모두와 무엇 일대 다 관계를 반환하는 모든 사업자의 검색 설정합니다. 예를 들어 데이지 체인으로 연결할 수는 없습니다.

ALL to_many.another_to_many.attribute1 
+0

예,하지만 sectionNameKeyPath에 조건자를 추가 할 수 있는지 구체적으로 알고 싶습니다. – Sage

+0

NSFetchedResultsRequest의 sectionNameKeyPath를 의미하면 no입니다. 기본 섹션 이름 동작을 변경하려면 NSFetchedResultsRequest를 서브 클래스 화해야합니다. – TechZen