2009-01-04 86 views
1

我对此很陌生,所以请为我贬低它。我一直在修改iPhone应用程序的Objective-C,并且遇到了障碍。下载带有可变URL的图像?

我想将包含在变量(字符串)中的值传递给方法,但它不起作用。我猜测这是因为变量可能是指向值的指针,而不是值本身。我想知道你是否能建议我如何解决。

这里是方法

- (UIImage *)newUIImageWithURLString:(NSString *)urlString 
{ 
   return [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]]; 
} 

发送此信息工程...在这里,我硬编码的URL发送。

UIImage* newimage = [self newUIImageWithURLString:@"http://images.mydomain.com/PhotoServer/Thumb/97/83358897.jpg"]; 

这一个不...这里的变量是passed.I得到一个错误的 传递的值没有价值。

UIImage* newimage = [self newUIImageWithURLString:newListing.ListingPhotoUrl]; 

我知道它确实有价值,因为以下工作。

self.ListingtitleLabel.text = newListing.ListingPhotoUrl; 

有什么想法?

回答

2

您确定动态网址有效吗?例如,如果newListing.ListingPhotoURL不是有效的URL或无法访问,您将得到此错误,因为您没有进行任何错误检查。尽管代码很简洁,但在调试时应该稍微冗长些,或者至少在您更熟悉该语言之前。我建议你重写方法,例如:

-(UIImage*)newUIImageWithURLString:(NSString*)urlString { 
    NSParameterAssert(urlString); 
    NSData *pictureData = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]; 
    NSAssert1(pictureData, @"No data returned for url: %@", urlString); 
    return [[UIImage alloc] initWithData:pictureData]; 
} 

有了这样写的方法,你会立刻知道是否如预期般(断言宏将抛出异常)自己是不是表现。如果您尝试调试某些内容,这也为您提供了更多细化的地方来设置断点。