0

当我将 UIImage 从 URL 加载到 iPhone 上的 UIImageView 时,我遇到了一些问题。当我使用对象的属性生成 NSURL(使用 NSURL 的 URLWithString 方法的参数中的 URL)时,根本不会检索到图像,但是如果我对相同的 URL 进行硬编码,则会按预期检索和显示图像。
[item valueForKey:@"pictureLocation"]; 下面的部分似乎是导致问题的原因,因为即使连接两个硬编码字符串,NSURl 也不会出现任何问题。

NSString * imagePath = @"http://localhost:3000";
NSString * specificPath = (NSString *)[item valueForKey:@"pictureLocation"] ;   
//concatenate the strings to get a fully formed URL
NSString * finalPath = [imagePath stringByAppendingString:specificPath];    

UIImage *img = [[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:finalPath]]] retain];

本质上,当我 NSLog 最终路径并将该 URL 硬编码到程序中时,我得到了预期的结果。

为什么会出现这种情况?

4

3 回答 3

0

NSStringreturn by是如何valueForKey:形成的?是像“image.png”,还是“/image.png”?如果是前者,你会想要使用stringByAppendingPathComponent:而不是stringByAppendingString:.

于 2009-08-18T05:29:20.017 回答
0

我认为问题与正确的编码有关。

尝试使用以下函数正确编码参数:

encodedparams = [params stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

所以在你的情况下:

NSString * specificPath = (NSString *)[item valueForKey:@"pictureLocation"] ;
specificPath = [specificPath stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

我认为这将解决您的问题。

于 2010-01-27T06:13:30.530 回答
0

您需要使用 UIWebView 并<img />在其中加载一个 html。至少这是一个很好的解决方法。

在此处查看代码http://blog.timeister.com/2009/07/18/iphone-show-online-image/

- (void)loadImage:(NSString*)url frame:(CGRect)frame {
NSString* textHTML = @"
<html><head>
<style type=\"text/css\">
body {
background-color: transparent;
color: white;
}
</style>
</head><body style=\"margin:0\">
<img  src=\"%@\"  width=\"%0.0f\" height=\"%0.0f\"></img>
</body></html>";

NSString* html = [NSString stringWithFormat:textHTML, url, frame.size.width, frame.size.height];

if(webView == nil) {
webView = [[UIWebView alloc] initWithFrame:frame];
[self.view addSubview:webView];
}

[webView loadHTMLString:html baseURL:nil];
}

阿德里安

于 2009-08-18T05:45:06.710 回答