这是事情。在我的应用程序中,我想在CollectionView上显示存储在Core Data中的照片(是的,我使用外部存储)。要仅获取我的实体中的照片,请执行以下操作:
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"SmallThing"];
[fetchRequest setResultType:NSDictionaryResultType];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"smallphoto", nil]];
self.photos = [[managedObjectContext executeFetchRequest:fetchRequest error:nil]mutableCopy];
这似乎工作正常,它返回照片的数据并将其存储在数组上。然后我创建了一个方法将其转换为UIImage,因此我可以存储在另一个数组中,如下所示:
- (NSMutableArray *)convertDataToImage:(UIImage *)image {
for (NSData *data in self.photos) {
image = [[UIImage alloc] initWithData:data];
[self.images addObject:image];
}
return self.images;
}
当我到达image = [[UIImage alloc] initWithData:data
行时,它崩溃了,我收到以下错误:
[16697:2367280] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSKnownKeysDictionary1 length]: unrecognized selector sent to instance 0x7fae0c117cc0'
我不知道我还能做些什么。有什么想法吗?
提前致谢
答案 0 :(得分:1)
您明确告诉获取请求返回带有以下行的字典:
LUT[0]
这意味着[fetchRequest setResultType:NSDictionaryResultType];
返回的数组包含executeFetchRequest...
个对象,其键值对与您指定的属性相对应。
NSDictionary
中的代码应与以下内容相符:
convertDataToImage
如果您指定了不同于for (NSDictionary *dictionary in self.photos) {
NSData *data = dictionary[@"smallphoto"];
...
}
以外的其他属性,那么您当然会在适当的时候替换该字符串。