2017-04-13 135 views
1

在用户登录后的第一个View Controller中,可以快速检查用户是否将自定义图像上传到了自己的帐户。 (如果他有,用户的个人资料数据中有一个URL。)UIImageView显示来自HTTP的下载图像,但不会显示图像资源

这些图像在我的代码中正确下载,并且它们显示得很漂亮。问题出现在没有自定义用户图像时,VC尝试将相同的UIImageView设置为默认图片(在xcassets中)。据我所知,图片被加载到包中,并且它是一个有效的PNG文件。

这是设置图像的代码片段。如果找不到自定义网址,我将URL参数字符串设置为“nil”。

-(void) setImageWithUrl: (NSString *) Url Imageview: (UIImageView *) image { 

if (Url.length > 4) { 
    NSURL *url = [NSURL URLWithString:Url]; 

    NSData *data = [NSData dataWithContentsOfURL:url]; 
    UIImage *Profileimage = [UIImage imageWithData:data]; 

    [image setImage:Profileimage]; 
} 
else { 
    UIImage *Profileimage = [UIImage imageNamed:@"DefaultPicture"]; 

    [image setImage:Profileimage]; 
} 
} 

这个让我疯狂,所以所有奇怪的想法都受到欢迎。 :-)

让我知道你是否希望我发布你认为可能是一个因素的任何其他代码部分。

+0

你设置了一个断点,并通过调试?如果是这样,这个流程实际上是否在'if(Url.length> 4)'失败并落入'else'?如果是这样,'Profileimage'是否从'[UIImage imageNamed:@“DefaultPicture”];'?找出哪个问题的答案是“否”,你应该找到解决方案。 – DonMag

+0

@DonMag标准调试演练取得成功。事实证明,Url.length总是大于4,因为数据库有时会将其放入用户配置文件中的一些“额外垃圾”。在代码中解决这个问题解决了这个问题。 –

回答

0

它看起来像调试需要的问题。但为什么不使用任何图像下载/缓存库,如SDWebImage? 这将是非常有效和方便

+1

这是一个不错的主意,但它没有解决为什么没有出现默认图像。 (但我可能会在未来的版本中添加一些这样的优化:这只是现在应用程序的第一个计划版本。) –