2015-06-20 75 views
0

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

但它不工作,我只是得到一个错误信息,请帮忙!

回答

1

首先,你需要检查error,而且datanil,因为这不是安全的:

[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图像,但这不会存在。


从你后续的评论:

为每个你有objectsNSNull情况填写您的contentImageArray。当你遍历objects,保证指数,然后在图像已准备就绪,您可以:

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

,当您尝试使用的图像,检查它是否是产品尚未:

id image = [contentImageArray objectAtIndex:indexPath]; 

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

哦,感谢它工作,但现在我意识到我的索引逻辑意味着什么。 你对我的索引逻辑有什么建议吗? – user2597038

+0

大概你想要的图像与它们在'objects'中相关的项目顺序相同? – Wain

+0

是的,没错 – user2597038