私は、別の管理対象サブクラスのカードと多対多の関係を持つTagという管理オブジェクトサブクラスを持っています。私のコードでは、ストアからTagを取得し、関連するCardオブジェクトにアクセスして配列に追加します。私はまた、配列に追加される別のマネージオブジェクトサブクラスCardVariationを持っています。NSManagedObjectのサブクラスをプロトコル
Cardと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