将数据转换为 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
图像,而这将不存在。
来自您的后续评论:
为您拥有的每个 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);
我尝试将数据从 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
图像,而这将不存在。
来自您的后续评论:
为您拥有的每个 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);