出于某种原因,我无法将{64}基本编码图像显示在UIImageView
的{{1}}中。
这是我的代码:
UICollectionView
DEBUG LOG:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"task_cell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
NSDictionary* json = [dataSource objectAtIndex:indexPath.row];
[cell setBackgroundColor:[UIColor whiteColor]];
UIImageView *image = (UIImageView *)[cell viewWithTag:100];
UILabel *text = (UILabel *)[cell viewWithTag:101];
NSString *ext = [[json objectForKey:@"image"] pathExtension];
NSString *final = [NSString stringWithFormat:@"data:image/%@;base64,%@", ext, [json objectForKey:@"b64img"]];
NSURL *url = [NSURL URLWithString:final];
NSData *imageData = [NSData dataWithContentsOfURL:url];
[image setImage:[UIImage imageWithData:imageData]];
text.text = [json objectForKey:@"title"];
return cell;
}
我确实看到Printing description of final:
data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/......(goes on for a while)
url = nil
imageData is nil
正在改变。
那么,我该怎么做呢。
答案 0 :(得分:0)
这可能是您构建图像路径的一个问题。这看起来很时髦:
NSString *final = [NSString stringWithFormat:@"data:image/%@;base64,%@", ext, [json objectForKey:@"b64img"]];
请在设置图片时发布final
,url
的NSLog值以及imageData
是否为零。
答案 1 :(得分:0)
我必须做以下事情来解决它..
更改网址的代码:
NSURL * url = [NSURL URLWithString:[NSString URLEncodeString:final]];
将函数URLEncodeString添加到NSString。我使用了NSURL URLWithString:myString returns Nil?中的代码。它就像一个魅力。
并且presto ......它有效。