2009-12-16 4 views
0

일부 NSManagedObject가 있는데 그 중 속성을 정렬하고 비교하기위한 메소드를 작성하고 싶습니다.정렬 비교 방법으로 코어 데이터 꾸미기

내 문제는 핵심 데이터가 @dynamic 속성을 정의하기 때문에 컴파일 타임에 참조 할 수 없다는 것입니다. 이 같은 방법이있는 NSManagedObject 장식을 의미합니다 :

- (NSComparisonResult) compareDateAndTime:(Event *) event { 
    return [originDate compare:[event originDate]]; 
} 

는 "originDate"라는 속성을 찾을 수없는 컴파일러가 발생합니다. 위의 방법은 다음과 같이 호출됩니다

NSArray *events = [[NSArray alloc] 
     initWithArray:[unsortedEvents sortedArrayUsingSelector:@selector(compareDateAndTime:)]]; 

나는 술어 또는 fetchedResultController로 갈 수 있지만 각 NSManagedObject에 대한 동일한 NSObjects을 가지고 나는 방법으로 자신이 구축하고 싶습니다. 이 NSObject는 전달 된 NSObject로 설정된 속성이 설정되기 전에 채워지는 임시 객체로 작동합니다. 특수 접근 자 같은 일부 다른 기능도 NSManagedObject에 추가하고 싶습니다.

** ** 메서드 및 함수 ** (2) **를 사용하여 NSManagedObjects를 꾸미고 엔티티의 클래스를 "다시 빌드"할 때 Xcode에서이를 덮어 쓰지 않는 것이 일반적/?

어떤 도움이나 주어진 "RTFM":) 주셔서 감사합니다

+0

아래 질문 (1 및 2)에 답변했지만 프랭크가 처음에 설명한 "문제"를 이해하지 못하는 것에 동의합니다. 컴파일러는 선언 된 속성을 사용할 수 있도록해야합니다. 엔티티에 대해 생성 된 클래스의 헤더를 포함하고 있습니까? – gerry3

답변

2

나는 다시 생성 매우 자주 내 엔티티 모델 클래스를, 그래서 나는 "지원으로 (일시적 속성에 대한 게터의 구현 포함) 지원 방법을 추가 "카테고리를 모델 클래스에 추가합니다.

필자는 모델 클래스 파일을 수정하지 않아도 실수로 다른 메소드를 덮어 쓸 수있는 방법이 없습니다.

예를 들어, "장소"엔티티는 이름 문자열과 위도/경도 숫자를 가질 수 있습니다. 또한 이름의 첫 글자에 대해 일시적인 속성을 가질 수 있습니다. 이것은 대형 테이블 뷰에서 섹션 인덱스 제목의 섹션 이름 키 경로로 사용될 수 있습니다.

엑스 코드는이 같은 "장소"엔티티의 클래스 파일을 생성합니다

Place.h :

#import <CoreData/CoreData.h> 

@interface Place : NSManagedObject 
{ 
} 

@property (nonatomic, retain) NSString * placeName; 
@property (nonatomic, retain) NSNumber * latitude; 
@property (nonatomic, retain) NSNumber * longitude; 

@end 

Place.m :

#import "Place.h" 

@implementation Place 

@dynamic placeName; 
@dynamic latitude; 
@dynamic longitude; 

@end 

I을 "장소"수업에 "지원"카테고리를 만드십시오.

PlaceSupport.h :

@interface Place (Support) 

- (NSString *)uppercaseFirstLetterOfName; 
- (CLLocation*)location; 

@end 

하고 objectForKey:을 사용할 수 PlaceSupport.m

+0

Gerry 고맙습니다! 내 얼굴이 빨개 졌어. 컴파일러에서 오류를 제거 할 수 없어 ManagedObjects를 삭제하고 다시 빌드하고 Xcode를 닫은 다음 다시 시작하면 갑자기 속성에 액세스하는 데 문제가 없었습니다. (지금 내가 왜 구글이나 내 Objective C 서적에서 이것을 발견 할 수 없었는지 알지 못한다. 문제는 없었다). 저는 Category 솔루션을 정말 좋아합니다. Im은 Objective C에 대해별로 경험이 없었고 서브 클래 싱이 항상 필요한 것은 아니라는 사실을 잊어 버렸습니다. 적어도 뭔가 좋은 내 질문에서 왔어요 :) – RickiG

0

에서 그것을 구현?

한편, 내 코드에서 속성을 직접 사용하는 데 문제가 없습니다.

+0

당신은 맞아 프랭크, 나는 단순히 이상한 Xcode 행동에 부딪 쳤고 거기에 자리를 찾을 경험이 없었어요 : – RickiG

관련 문제