将数据转换为UIImageView

时间:2015-06-20 14:01:01

标签: parse-platform uiimage nsdata

我尝试将数据从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)]];

但它不起作用,我只是收到错误信息,请帮助!

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/"});