【发布时间】:2013-05-11 17:59:52
【问题描述】:
在将获取限制为多个属性时,似乎无法弄清楚从关系中获取属性的技巧。在下面的代码中,“缩略图”是实体“照片”的可转换 UIImage 属性。在带有“缩略图”键的字典数组中总是可以很好地返回。我无法弄清楚的是第二个属性/属性,其中“previewImage”是 Photo 中与另一个名为“Image”的实体的关系,该实体具有可转换的属性“uiImage”(这是一个 UIImage)。
我试过了:
[fetchRequest setPropertiesToFetch:@[@"thumbnail", @"previewImage.uiImage"]];
但我收到了这个错误:
-[NSExpressionDescription valueTransformerName]: unrecognized selector sent to instance 0x13078920
我已经试过了:
[fetchRequest setPropertiesToFetch:@[@"thumbnail", @"previewImage"]];
我确实在每个字典中有两个项目
{
previewImage = "0xbabba90 <x-coredata://03FF7129-1345-4BAE-A74E-2FF5A2B38CDC/Image/p5>";
thumbnail = "<UIImage: 0xbabbc60>";
}
但是当我尝试使用下面的“图像”对象时
NSDictionary *dict = [self.photos objectAtIndex:0];
Image *theImage = (Image *)[dict objectForKey:@"previewImage"];
[self.delegate photoCollectionViewController:self didSelectPreviewImage:theImage.uiImage];
我收到此错误
"[_NSObjectID_48_0 uiImage]: unrecognized selector sent to instance 0xbabba90"
我什至在请求中抛出了这个
[fetchRequest setRelationshipKeyPathsForPrefetching:@[@"previewImage.uiImage"]];
所以,我想我在胡思乱想,没有得到这个。任何帮助,将不胜感激。谢谢!
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Photo" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setResultType:NSDictionaryResultType];
【问题讨论】:
-
对
_NSObjectID_48_0的引用表明您在某处使用了NSManagedObjectIDResultType,尽管您的代码显示NSDictionaryResultType。您是否在某处询问过对象 ID? -
没有。我在整个项目中搜索“NSManagedObjectIDResultType”,但那里什么也没有。在我尝试限制获取的属性之前,我什至不知道您可以更改结果类型:)顺便说一句,我有你的书;)
标签: ios core-data nsfetchrequest