我是新手,所以请为我愚蠢。我一直在修补一个iPhone应用程序的Objective-C,并且遇到了障碍。
我试图将变量(字符串)中包含的值传递给方法,但它不起作用。我猜这是因为变量可能是指向值的指针,而不是值本身。我想知道你是否可以建议我如何解决。
这是方法
- (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"];
这个没有...这里变量正在传递。我得到一个错误 传递的价值没有价值。
UIImage* newimage = [self newUIImageWithURLString:newListing.ListingPhotoUrl];
我知道它确实有一个值,因为以下工作正常。
self.ListingtitleLabel.text = newListing.ListingPhotoUrl;
有什么想法吗?
答案 0 :(得分: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];
}
使用这样编写的方法,如果某些内容没有按预期运行,您将立即知道(断言宏将抛出异常)。如果您正在尝试调试某些内容,这还可以为您提供更精细的设置断点的位置。