将数据转换为UIImageView
问题描述:
我尝试将数据从parse.com转换为我的UIImageView。将数据转换为UIImageView
for (PFObject *object in objects)
{
PFFile *file = [object objectForKey:@"imageData"];
[file getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
[contentImageArray addObject: [UIImage imageWithData:data]];
}];
}
我加载我的数据在一个NSMutableArray,这仍然有效,但我希望我的数据在ImageView中。
所以我的代码:
cell.contentImage.image = [UIImage imageWithData:[contentImageArray objectAtIndex:(contentImageArray.count - indexPath.row - 1)]];
但它不工作,我只是得到一个错误信息,请帮忙!
答
首先,你需要检查error
,而且data
不nil
,因为这不是安全的:
[file getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
[contentImageArray addObject: [UIImage imageWithData:data]];
}];
如果解析了返回您的应用程序会崩溃的数据的问题。
而且,在代码中你已经创建从数据的图像,所以您不需要再这样做:
cell.contentImage.image = [contentImageArray objectAtIndex:(contentImageArray.count - indexPath.row - 1)];
最后,你正在做什么指数每个图像都有假设在数组中,你有非常具体的索引逻辑。即使现在这样做,在将来也不太可能正常工作。你在后台加载图像并把它们放入一个数组中 - 你不知道图像将要加载的顺序是什么......你应该运用逻辑来处理它。如果您在没有任何图像时加载表格,则会尝试从数组中获取(0 - 0 - 1)'th
图像,但这不会存在。
从你后续的评论:
为每个你有objects
的NSNull
情况填写您的contentImageArray
。当你遍历objects
,保证指数,然后在图像已准备就绪,您可以:
[contentImageArray replaceObjectAtIndex:i withObject:[UIImage imageWithData:data]];
,当您尝试使用的图像,检查它是否是产品尚未:
id image = [contentImageArray objectAtIndex:indexPath];
cell.contentImage.image = ([image isKindOfClass:[UIImage class]] ? image : nil);
哦,感谢它工作,但现在我意识到我的索引逻辑意味着什么。 你对我的索引逻辑有什么建议吗? – user2597038
大概你想要的图像与它们在'objects'中相关的项目顺序相同? – Wain
是的,没错 – user2597038