2009-01-04 65 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]; 
} 

有了這樣寫的方法,你會立刻知道是否如預期般(斷言宏將拋出異常)自己是不是表現。如果您嘗試調試某些內容,這也爲您提供了更多細化的地方來設置斷點。