首页 文章

将NSData数组转换为UIImage数组

提问于
浏览
0

这就是事情 . 在我的应用程序中,我想在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'

我不知道还能做些什么 . 有任何想法吗 ?

提前致谢

1 回答

  • 1

    您明确告诉获取请求返回带有该行的字典:

    [fetchRequest setResultType:NSDictionaryResultType];
    

    这意味着 executeFetchRequest... 返回的数组包含 NSDictionary 个对象,其键值对对应于您指定的属性 .

    您在 convertDataToImage 中的代码应该符合以下条件:

    for (NSDictionary *dictionary in self.photos) {
        NSData *data = dictionary[@"smallphoto"];
        ...
    }
    

    如果你指定了另一个属性来获取 smallphoto 以外的其他属性,你当然会在那里替换那个字符串 .

相关问题