다른 관리 대상 하위 클래스 카드와 다기간 관계가있는 Tag라는 관리 객체 하위 클래스가 있습니다. 내 코드에서 저장소에서 Tag를 검색 한 다음 관련 Card 객체에 액세스하여 배열에 추가합니다. 또한 배열에 추가되는 다른 관리 대상 객체 하위 클래스 인 CardVariation이 있습니다.NSManagedObject 하위 클래스를 프로토콜
카드와 CardVariation 모두 TaggedCard 프로토콜을 준수합니다. 내가 배열에 저장된 개체에 액세스 할 때, 나는 TaggedCard 프로토콜에 캐스팅 :
id<TaggedCard> x = (id<TaggedCard>)[theArray objectAtIndex:i];
내가 다음 개체에 TaggedCard 메시지를 보내려고 :이 실행되면
NSString *y = [x taggedCardName];
, 내가 할 예외 :
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[NSManagedObject taggedCardName]: unrecognized selector sent to instance 0x4e7c620'
카드 (또는 CardVariation)에 문제없이 캐스팅 할 수 있습니다. 프로토콜에 관리 객체 하위 클래스를 캐스팅하는 데 특별한 것이 있습니까?
' (엔티티 : 카드; id : 0x4e5a590 ; 데이터 : ) ' –
Tom
죄송합니다, 그것은 객체 x였습니다; 클래스는 NSManagedObject – Tom
예 - 그게 잘못입니다. 당신은' (엔티티 : 카드; ...)'를보아야합니다. –
paulmelnikow