将数据转换为 UIImageView

Convert data to an UIImageView

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

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

首先,您需要检查 error 并且 data 不是 nil,因为这不安全:

[file getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
    [contentImageArray addObject: [UIImage imageWithData:data]];
}];

如果解析在返回数据时出现问题,您的应用程序将会崩溃。

此外,在该代码中,您已经从数据中创建了图像,因此您无需再次执行此操作:

cell.contentImage.image = [contentImageArray objectAtIndex:(contentImageArray.count - indexPath.row - 1)];

最后,您假设每个图像在数组中有什么索引,并且您有非常具体的索引逻辑。即使现在可以,将来也不太可能很好地/正常地工作。您在后台加载图像并将它们放入数组中 - 您不知道图像将以什么顺序加载......您应该应用逻辑来处理它。如果在没有任何图像时加载 table,它们将尝试从数组中获取 (0 - 0 - 1)'th 图像,而这将不存在。


来自您的后续评论:

为您拥有的每个 objectsNSNull 的实例填充您的 contentImageArray。当您迭代 objects 时,保留索引,然后当图像准备就绪时,您可以:

[contentImageArray replaceObjectAtIndex:i withObject:[UIImage imageWithData:data]];

当您尝试使用图像时,请检查它是否可用:

id image = [contentImageArray objectAtIndex:indexPath];

cell.contentImage.image = ([image isKindOfClass:[UIImage class]] ? image : nil);