似乎无法找出在将获取限制为多个属性时从关系中获取属性的技巧。在下面的代码中,“thumbnail”是实体“Photo”的可转换的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? – 2013-05-11 19:57:12
不,我在整个项目中搜索了“NSManagedObjectIDResultType”,但没有任何内容。我甚至不知道你可以改变结果类型,直到我试图限制提取的属性:)顺便说一句,我有你的书;) – user1139479 2013-05-11 20:26:01