我有一个简单的情况,我有一个 CDPerson 类,它是 NSManagedObject 的子类。此类包含与 CDHair 类(也是 NSManagedObject 的子类)的一对一关系。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[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 类是什么。其次,我认为从 fetch 中检索到的属性将是 CDHair 的 CoreData 实例,但情况似乎并非如此。它也不是 NSManagedObject。
我哪里出错了?