2014-04-14 3 views
1

xcdatamodeld에서 생성 된 Core Data 클래스 인 ZSShotCD가 있습니다 (모델에 올바르게 클래스를 설정했습니다). 나는 어떤 시간에 다시 생성해야 할 수도 있기 때문에 거기에 임의의 커스텀 메소드를 넣고 싶지 않으므로 ZSShot으로 서브 클래 싱했습니다.NSManagedObject 하위 클래스 - 인스턴스로 전송 된 인식 할 수없는 선택자

첫째, 생성 된 클래스 :

#import <Foundation/Foundation.h> 
#import <CoreData/CoreData.h> 

@interface ZSShotCD : NSManagedObject 

@property (nonatomic, retain) NSString * shotDescription; 
@property (nonatomic, retain) NSString * shotType; 

@end 

하는 .m 파일을 사용하면 속성에 대한 @dynamic 선언의 무리와 함께, 기대하는 것입니다 여기에 몇 가지 관련 비트입니다. 나는 그것을 전혀 망쳐 놓지 않았다. 서브 클래스에 대한 지금

- ZSShot.h :

#import <Foundation/Foundation.h> 
#import "ZSShotCD.h" 

@interface ZSShot : ZSShotCD 
- (NSString *)MainText; 
@end 

그리고하는 .m 파일 :

#import "ZSShot.h" 

@implementation ZSShot 

- (NSString *)MainText 
{ 
    NSString *mainText = [NSString stringWithFormat:@"%@ %@", [self valueForKey:@"shotType"], [self valueForKey:@"shotDescription"]]; 
    return mainText; 
} 

나는이 같은 ZSShot의 인스턴스에의 mainText 메소드를 호출 할 때 :

cell.shotDescriptionLabel.text = [item MainText]; 

내가 얻을 :

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ZSShotCD MainText]: unrecognized selector sent to instance 0x8d130c0' 

해당 인스턴스 (셀) 엔티티에 정의 된 특성에 문제가 없습니다 (핵심 데이터에서 데이터를 가져온 것). 그리고 다른 엔티티에 구축 된 클래스의 다른 위치에서 사용 된 것과 기본적으로 동일한 코드를 사용하고 있습니다. 유일한 차이점은 하위 클래스에 정의 된 메서드를 사용하려는 나의 시도입니다.

누구든지이 문제에 대해 의견을 개진 할 수 있습니까?

enter image description here

또는 당신은 얻을 것이다 (사용자 정보가 NSManagedObject 클래스이다 사용자 기반 서브 클래스입니다.) :

+3

'항목'의 유형은 무엇입니까? 'NSLog (@ "% @", [item class])'로 확인하십시오.'ZSShotCD'라고 생각합니다. BTW 하위 클래스 대신 범주를 사용하지 않는 이유는 무엇입니까? – KudoCC

+1

항목을 생성 한 코드를 보여 주시겠습니까? @KudoCC가 말했듯이 ZSShotCD가 아닌 ZSShotCD 인 것처럼 보입니다. ZSShot은 예외로 확인됩니다. – Paulw11

+1

코어 데이터 가져 오기를 수행하여 "ZSShot 인스턴스"를 얻었을 것입니다.이 경우 ZSShot의 인스턴스는 아니지만 ZSShotCD의 인스턴스입니다. 오류 메시지는 이에 대해 아주 분명합니다. @ KudoCC의 카테고리에 대한 제안은 spot-on입니다. 그러면 서브 클래스의 인스턴스가되도록 가져 오기 결과를 캐스팅하거나 피들을 넣거나 아무것도하지 않아도됩니다. – RobP

답변

3

당신은 다음과 같이 당신의 xxx.xcdatamodeld의 엔티티 클래스를 설정해야 호출하는 메서드가없는 기본 클래스의 인스턴스입니다.

관련 문제