코어 데이터에 의해 생성 된 클래스 Base : NSManagedObject
이 있으며이 엔티티에 몇 가지 메소드를 추가하기 위해 서브 클래스로 Derived : Base
을 사용합니다. 이제 Derived
클래스에 속성 (Base
클래스에 없음)을 추가하고 싶습니다. 그러나 추가 된 속성의 setter에 액세스하려고하면 예외가 throw됩니다.NSManagedObject 하위 클래스의 하위 클래스에 속성을 추가 할 수 있습니까?
caught "NSInvalidArgumentException", "-[Base setAddedProperty:]: unrecognized selector sent to instance 0x7fdcc31b36d0"
아무도 도와 줄 수 있습니까?
EDIT : NSManagedObject의 하위 클래스는 방금 Derived
에 메서드를 추가했기 때문에 NSManagedObject의 하위 클래스에 자체 메서드가 없어서 비슷한 예외가 발생했습니다. NSManagedObject의 하위 클래스에 메서드를 추가하는 유일한 방법은 그 평균 범주입니까?
편집 : 구성의 항목 "클래스"를 Derived
으로 변경했으며 현재 모든 것이 작동합니다. 새로 추가 된 모든 특성에 액세스하고 사용자 정의 된 메소드를 호출 할 수 있습니다. 왜? 이것이 좋은 습관입니까?
편집 : 위의 설명이 잘못 이해 된 것 같습니다. 하위 엔티티를 생성하지 않고 사용자 정의 된 메소드 및 특성을 제공하기 위해 코어 데이터에 의해 생성 된 엔티티 클래스를 서브 클래스 화하려고합니다. 따라서 Derived
은 데이터 모델의 엔터티가 아닙니다.
@Zhihhao L. .xcdatamodel을 업그레이드하려고 했습니까? .xcdatamodel에 새 엔티티를 추가 한 후에는 클래스를 삭제하고 다시 만들어야합니다. –
@ СергейОлейнич 데이터 모델을 변경하지 않았습니다. 난 그냥 NSManagedObject의 하위 클래스를 생성하고 생성 된 하위 클래스에 대한 몇 가지 하위 클래스를 만들었습니다. – Codinfox
@ Zhihhao L. 모델에서 상속을위한 체크 박스를 설정 했습니까? –