私はAnimal
というクラスを持っています。これはBaseEntity
のサブクラスです。私はAnimal
とBaseEntity
の両方に準拠するカテゴリを持つCoreDataConversions
というプロトコルを持っています。プロトコルでは、私は、メソッドが定義されている:Objective-Cカテゴリで `super`を呼び出す
- (instancetype)initWithManagedObject:(NSManagedObject *)managedObject dataManager:(id<DataManager>)dataManager
BaseEntity
カテゴリは、この罰金を実装しています。次に、Animal
はBaseEntity
のサブクラスなので、私は動物カテゴリーで[super initWithManagedObject:managedObject dataManager:dataManager];
を呼び出します。
私はメッセージでクラッシュを取得:
:
[Animal setDataManager:]
認識されていないセレクタは、私がスーパーへの呼び出しにブレークポイントを設定して、次のログアウト...インスタンスに
を送りましただから、
po [self class] // Prints Animal
po [self superclass] // Prints BaseEntity
po [super class] // Prints Animal
po [super superclass] // Prints BaseEntity
:からAnimal
カテゴリのsuper
作るの呼び出しである理由superclass
への通話は明らかにBaseEntity
を参照していますか?
EDIT:
は、ここでのクラッシュの原因となるコードです:
- (id)insertEntityForClass:(Class)class
{
if (![class conformsToProtocol:@protocol(CoreDataConversions)]) {
return nil;
}
// A class method defined in CoreDataConversions
NSString *entityName = [class coreDataEntityName];
// Insert core data entity
NSManagedObject *managedObject = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:self.currentMainContext];
// Init with the managed object
id entity = [[class alloc] initWithManagedObject:managedObject dataManager:self];
return entity;
}
私は単にAnimal *animal = [dataManager insertEntityForClass:[Animal class]];
を呼び出し、animal
の存在を主張するテストを持っています。
Animal
はそうのようなメソッドを実装します。
- (instancetype)initWithManagedObject:(NSManagedObject *)managedObject dataManager:(id<RHDataManager>)dataManager
{
self = [super initWithManagedObject:managedObject dataManager:dataManager];
if (self) {
// TODO
}
return self;
}
そしてBaseEntity
はそうのようなメソッドを実装します。
- (instancetype)initWithManagedObject:(id)managedObject dataManager:(id<RHDataManager>)dataManager
{
self = [super init];
if (self) {
self.dataManager = dataManager;
}
return self;
}
クラッシュの周りにコードを投稿して、クラスが入っていることを示すことができますか?質問を明確にするためです。 – danh
@danhがクラッシュの周りにコードを追加しました –
密集しているかもしれませんが、投稿コードに 'setDataManager'の呼び出しがありません – danh