我尝试将数据从parse.com转换为我的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)]];
但它不起作用,我只是收到错误信息,请帮助!
答案 0 :(得分: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
图像,而这不会存在。
来自您的后续评论:
为contentImageArray
填充NSNull
个实例,为objects
填充objects
。当您迭代[contentImageArray replaceObjectAtIndex:i withObject:[UIImage imageWithData:data]];
时,保留索引,然后在图像准备好后,您可以:
id image = [contentImageArray objectAtIndex:indexPath];
cell.contentImage.image = ([image isKindOfClass:[UIImage class]] ? image : nil);
当您尝试使用该图像时,请检查它是否可用:
Process p = Runtime.getRuntime().exec(new String[]{"bash","-c","curl -i -d 'update=INSERT+DATA+{+?subject2+<http://www.w3.org/2002/07/owl/sameAs>+?subject3+.+}+WHERE+{+?subject2+<http://localhost:2020/vocab/Schema_feature>+\""+first[0]+"\"+.+?subject3+<http://localhost:2020/vocab/Schema_feature>+\""+first[1]+"\"+.+}' http://localhost:8000/update/"});