プロジェクトの NSManagedObject を (かなり) サブクラス化しました。元のプロジェクトでは、何の努力もせずにシームレスに機能しました。
これらのファイルを新しいプロジェクトにコピーし、適切な CoreData クラスを新しいデータ モデルに手動で追加しました。
残念ながら、私には「問題」があります。何らかの理由で、問題のサブクラスのメソッドが無視されています。2 つのプロジェクト間でまったく同じコードですが、認識されないセレクターの問題が突然発生します。
NSFetchRequest *blockRequest=[[NSFetchRequest alloc] init];
NSEntityDescription *blockDesc=[NSEntityDescription entityForName:@"AdBlock"
inManagedObjectContext:context];
[blockRequest setEntity:blockDesc];
AdBlock *curBlock=[adBlocks objectAtIndex:blockIndex];
adBlocks=[context executeFetchRequest:blockRequest error:nil];
for (AdBlock *block in adBlocks) {
[block initAdBlock];//Crashes with unrecognized selector
}
確認したところ、適切な .m ファイルがコンパイラのビルド フェーズに追加されました。コードは文字通りコピー&ペーストであり、2 つのプロジェクト間で同一です。ソースは機能しますが、宛先は機能しません。
サブクラスの型を返す必要があることをコンテキストに明示的に伝えていないことに気付きましたが、それは古いプロジェクトでは問題ではなかったのに、なぜ新しいプロジェクトで問題になるのでしょうか?