Iphone 在手机的UIImageView上从服务器加载图像

Iphone 在手机的UIImageView上从服务器加载图像,iphone,cocoa-touch,image,uiimageview,uiimage,Iphone,Cocoa Touch,Image,Uiimageview,Uiimage,将远程图像加载到UIImageVIew时遇到问题。。。 它只是没有显示图像,可能是我遗漏了什么 我也使用这里描述的方法,但结果相同 有人能帮我吗 这是我正在使用的代码 我从xml中获取数据,在image元素上我有完整的路径 [[detailViewController detailImage] setImage:[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: [NSString strin

将远程图像加载到UIImageVIew时遇到问题。。。 它只是没有显示图像,可能是我遗漏了什么

我也使用这里描述的方法,但结果相同

有人能帮我吗

这是我正在使用的代码

我从xml中获取数据,在image元素上我有完整的路径

[[detailViewController detailImage] setImage:[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: [NSString stringWithFormat:@"%@", [[promoList objectAtIndex: promoIndex] objectForKey: @"image"]] ]]] ];
使用此代码可以正确显示图像

[[detailViewController detailImage] setImage:[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: @"http://localhost/promos/preview/1.jpeg"]] ]];

由于下面的示例按照预期工作,并且除了url字符串外,示例看起来也一样,因此问题应该是获取url字符串。问题还在于代码看起来是一样的,但很难看到。我会将代码重构为如下内容:

NSObject *urlObject = [[promoList objectAtIndex:promoIndex] objectForKey:@"image"];
NSString *urlString = [NSString stringWithFormat:@"%@", urlObject];
NSURL *url = [NSURL URLWithString:urlString];
NSData *imageData = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:imageData];

[[detailViewController detailImage] setImage:image];
然后,您可以正确地调试语句,并确保在每个步骤之后都能得到预期的结果

更新 要删除换行符和制表符,您可以:

NSString *urlString = [NSString stringWithFormat:@"%@", urlObject];
urlString = [urlString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
如果urlObject已经是一个字符串,那么您可以执行以下操作:

NSString *urlString = [urlObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

这将使它更干净。

因为底部的示例按照预期工作,并且除了url字符串外,示例看起来也一样,所以问题应该是获取url字符串。问题还在于代码看起来是一样的,但很难看到。我会将代码重构为如下内容:

NSObject *urlObject = [[promoList objectAtIndex:promoIndex] objectForKey:@"image"];
NSString *urlString = [NSString stringWithFormat:@"%@", urlObject];
NSURL *url = [NSURL URLWithString:urlString];
NSData *imageData = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:imageData];

[[detailViewController detailImage] setImage:image];
UIImage *img = [[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:@"http://...."]]] retain];
if (img != nil) 
{ 
    [imageViewName setImage:img];
    [img release]; 
}
然后,您可以正确地调试语句,并确保在每个步骤之后都能得到预期的结果

更新 要删除换行符和制表符,您可以:

NSString *urlString = [NSString stringWithFormat:@"%@", urlObject];
urlString = [urlString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
如果urlObject已经是一个字符串,那么您可以执行以下操作:

NSString *urlString = [urlObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

这将使它更干净。

我尝试了它,并在调试器的urlObject上的摘要列中得到了它,在路径“\n\t\n\n\t”的末尾得到了它。我尝试了它,并在调试器的urlObject上的摘要列中得到了它,在路径“\n\t\n\t”的末尾得到了它
UIImage *img = [[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:@"http://...."]]] retain];
if (img != nil) 
{ 
    [imageViewName setImage:img];
    [img release]; 
}