2010-04-18 39 views
2

我有一些代码,加载图像文件离开网络,并把它放在图像视图。问题是它适用于除Google Charts之外的所有内容。这是令人沮丧的,因为我依靠这个来为我的应用绘制数据图表。下面是我需要加载的网址:Click to see my test chart。我不知道为什么NSImage似乎拒绝加载这个时,它适用于所有的选择。如果你知道为什么或有解决办法,任何帮助表示赞赏。从URL加载NSImage,但只有一些url的工作

下面是一些示例代码,我发现我使用加载图片:

NSURL *imageURL = [NSURL URLWithString:@"http://chart.apis.google.com/chart?cht=p3&chs=700x400&chd=t:20,20,20,20,20&chl=A|B|C|D|E&chco=66FF33,3333CC"]; 
NSLog(@"url"); 
NSData *imageData = [imageURL resourceDataUsingCache:NO]; 
    NSLog(@"data"); 
NSImage *imageFromBundle = [[NSImage alloc] initWithData:imageData]; 

(注:此代码将加载任何图像除了图表)

感谢

+1

请提供一些未能产生预期结果的示例代码;这将有助于破译问题的可能性。 – fbrereto 2010-04-18 03:19:09

+0

发布代码 – nosedive25 2010-04-18 03:22:07

+0

为什么不使用'initWithContentsOfURL:',就像你的其他问题所建议的那样? http://stackoverflow.com/questions/2660874/nsimage-from-website-url/2660884#2660884 – 2010-04-18 04:00:40

回答

4

这由于|而失败对于网址来说不是一个有效的字符。您必须替换|您的网址中带有转义码的字符:%7C。以下网址将工作:

http://chart.apis.google.com/chart?cht=p3&chs=700x400&chd=t:20,20,20,20,20&chl=A%7CB%7CC%7CD%7CE&chco=66FF33,3333CC

+7

或者只是使用'stringByAddingPercentEscapesUsingEncoding:'。那么你不必硬编码所有的各种逃脱。 http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/stringByAddingPercentEscapesUsingEncoding: – 2010-04-18 04:02:04

+0

Peter Hosey有权利回答这个问题..你应该发表一个答案,以便人们可以给你分数.. – 2010-04-18 04:44:25

1

或者只是使用

stringByAddingPercentEscapesUsingEncoding:

那么你不必硬编码的所有各种逃逸。 See Description

Peter值得赞许。