2013-01-12 6 views
2

지금까지 객체의 속성에 액세스하려면 KVC을 사용했습니다. 내가 KVC으로이 방법을 사용할 수 있습니다KVC에서 사용하는 MagicalRecord 정렬

-(Address *)mainAddress { 
    if (self.addresses != nil) { 
     return [self.addresses anyObject]; //stub method 
    } 
    else { 
     return nil; 
    } 
} 

mystring = [cliente valueForKeyPath:@"mainAddress.city"]; 

를 사용하지만 난 NSFetchRequestController (이 코드를 사용 MagicalRecord)를 만드는 데 사용할 수 없습니다 : 내 객체에서

나는이 같은 방법을

NSFetchedResultsController *acontroller = [Customer fetchAllSortedBy:@"mainAddress.city" ascending:ascending withPredicate:companyPredicate groupBy:nil delegate:self]; 

이것은 오류입니다 :

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath mainAddress.city not found in entity <NSSQLEntity Customer id=4>' 

답변

1

NSFetchedResultsController로 정렬을 사용하려면 mainAddress keyPath가 엔티티의 속성이어야합니다. NSFRC는 메모리에서 KVC를 사용하지 않고 기본 데이터 저장소를 사용하여 데이터를 정렬합니다. 요점 답변 : 데이터 모델에서 엔티티의 mainAddress 필드를 만듭니다.

+0

나는 시도 할 것이다.하지만 나는 db에 중복을 추가하는 것을 좋아하지 않는다. – IgnazioC

+0

이것은 중복의 문제가 아니라 오히려 검색이 충돌하는 이유를 파악하는 것입니다. 데이터를 복제하거나 응용 프로그램을 손상시키지 않으려 고합니다. – casademora

+0

나는 단순한 속성으로 메소드를 변경했는데 이제는 NSFRC가 완벽하게 작동합니다. 심지어 MagicalRecord ...하지만 내 모델을 변경해야합니다. – IgnazioC