単純な状況があります。NSManagedObject のサブクラスである CDPerson クラスがあります。このクラスには、CDHair クラス (NSManagedObject のサブクラスでもあります) との 1 対 1 の関係が含まれています。CDPerson クラスの関係プロパティの名前は「hair」です。
ManagedObjectContext 内のすべての CDPerson インスタンスで実際に使用されている個別の CDHair インスタンスを取得したいと考えています。
私はプロパティの個別のリストを取得しています(そしてこの部分は機能します)、
NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
fetchRequest.returnsDistinctResults = YES;
fetchRequest.propertiesToFetch = @[@"hair"];
fetchRequest.resultType =NSDictionaryResultType;
fetchRequest.predicate=[NSPredicate predicateWithFormat:@"hat=='no'"];
fetchRequest.returnsDistinctResults = YES;
NSArray* fetchResults = [context executeFetchRequest:fetchRequest error:&error];
予想どおり、NSArray の fetchResults。fetchResults[0] は予想どおり NSDictionary です。fetchResults[0][@"hair"] は何かに解決されますが、それが何であるかはわかりません。それはpoの説明です
0x8b7b120 <x-coredata://C7E53293-94C7-444D-8162-167B1D66A961/Hair/p33>
セレクターがないようです。それを CDHair にキャストし、インスタンスでプロパティ (.color など) を使用しようとすると、「認識されないセレクター」エラーが発生します。
CDTest[2865:70b] -[_NSObjectID_48_0 color]: unrecognized selector sent to instance 0x8ba8670
まず、クラス _NSObjectID_48_0 が何であるかわかりません。次に、フェッチから取得されたプロパティは CDHair の CoreData インスタンスであると考えましたが、そうではないようです。また、NSManagedObject ではありません。
どこで間違ったのですか?