0

URL から iPhone の UIImageView に UIImage をロードすると、いくつかの問題が発生します。オブジェクトのプロパティを使用して (NSURL の URLWithString メソッドの引数に URL を指定して) NSURL を生成すると、画像はまったく取得されませんが、同じ URL をハードコーディングすると、画像が取得され、期待どおりに表示されます。
[item valueForKey:@"pictureLocation"]; 2 つのハードコードされた文字列が連結されている場合でも、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];

基本的に、finalPath を NSLog し、代わりにその URL をプログラムにハードコーディングすると、期待どおりの結果が得られます。

なぜこれが当てはまるのでしょうか?

4

3 に答える 3

0

問題は適切なエンコーディングに関連していると思います。

次の関数を使用して、パラメーターを適切にエンコードしてみてください。

encodedparams = [params stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

だからあなたの場合:

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

これで問題が解決すると思います。

于 2010-01-27T06:13:30.530 に答える
0

NSStringreturn byはどのようにvalueForKey:形成されますか? 「image.png」のようなものですか、それとも「/image.png」ですか?前者の場合は、stringByAppendingPathComponent:代わりにを使用しますstringByAppendingString:

于 2009-08-18T05:29:20.017 に答える
0

UIWebView を使用して、その中に html をロードする必要があります<img />。少なくともこれは素晴らしい回避策です。

ここでコードを確認してください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 に答える