2013-04-02 103 views
0

我正在開發由靜態SQLite數據庫,系列tableviews和基於選項卡詳細視圖,其中在加載的DetailView第一視圖是它加載一系列圖像的滑動式的ImageView的iOS應用程序。將url附加到圖像路徑NSString?

我知道了這個代碼,其中它看起來像在本地工作,但我想將它從URL加載圖像,或者如果沒有互聯網連接可用顯示默認圖像。

的圖像在數據庫(爲例子)image.jpg的命名,我想他們都來自同一個URL目錄負載(例子)http://www.someurl.com/images/

謝謝

- (UIImage *) imageAtIndex:(NSUInteger)index { 

Image *currentImage = (Image *) [self.images objectAtIndex:index]; 

NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[currentImage filename] stringByDeletingPathExtension]] ofType:@"jpg"]; 

return [UIImage imageWithContentsOfFile:path]; 
} 
+0

當您嘗試訪問非本地資源時,嘗試使用「URL」而不是「路徑」。 – holex

回答

-1
NSString *urlStr = [@"http://www.someurl.com/images/" stringByAppendingString:[currentImage filename]]; 
NSURL *url = [NSURL URLWithString:urlStr]; 
NSData *imageData = [NSData dataWithContentsOfURL:url]; 
UIImage *image = [[UIImage alloc] initWithData:data]; 

或者類似的東西...

如果圖像是大或互聯網連接速度很慢,NSData的初始化可能需要一些時間。考慮在後臺線程獲取圖像數據,或者使用一些現有的框架,像SDWebImage

0

這個過程其實非常簡單:

  1. 嘗試使用NSURLConnection
  2. 如果下載的圖像數據成功,從數據創建一個UIImage
  3. 如果上述任一失敗,切換到您的佔位符/內置圖像
  4. 顯示所得到的圖像

我勸你有某種形式的佔位符,而圖像被下載,因爲這可能需要相當長一段時間。

不要與可達性打擾;它不是100%可靠的,而實際上試圖的下載是。

避免在後臺線程或隊列這樣做。 NSURLConnection是開箱即用的,使您更容易。儘管如此,有很多第三方框架試圖簡化與連接的工作。