2013-07-19 71 views
0

我在文檔目錄中有名爲「2」的文件夾。現在在文件夾「2」中,我有五個圖像,名爲0.png,1.png,2.png,3.png和4.png。我想要檢索這些圖像並保存到數組中。我有代碼,但它只返回一個圖像。從文檔目錄檢索多個圖像

int b=2; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
NSLog(@"%@",paths); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d/0.png",b]]; 
UIImage *img = [UIImage imageWithContentsOfFile:getImagePath]; 
NSLog(@"%@",getImagePath); 
imge.image=img; 
+0

順便說一下,一般應該謹慎加載滿載圖像的陣列,因爲圖像通常會消耗大量內存。如果你只有幾個,或者如果你有一個引人注目的商業案例來加載它們,那沒問題。但十次中的九次,最好加載一組圖像名稱,並讓UI在需要時加載圖像,而不是提前加載所有圖像。 – Rob

回答

1

只要使用的NSFileManager,像這樣:

[[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error]; 

它會給你所有在給定的路徑中的所有文件的文件路徑的數組。


這是如何加載URL數組中的圖像。

NSArray *paths = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error]; 
for (NSURL *url in paths) 
{ 
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]]; 
} 
+0

這樣,數組中的值將是(0,1,2,3,4)。我們仍然需要創建網址,然後從中獲取圖片。 – CalZone

+0

您不需要創建URL。此方法已經返回文件夾中包含的文件的URL。所以你只需要加載圖像。我已經用代碼更新了答案,如何加載圖像。 –

1

您應該遍歷圖像。

int b=2; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
NSLog(@"%@",paths); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSMutableArray *images = [NSMutableArray arrayWithCapacity:5]; 

for (int i = 0; i < 5; i++) 
{ 
    NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString  stringWithFormat:@"%d/%d.png",b, i]]; 
    UIImage *img = [UIImage imageWithContentsOfFile:getImagePath]; 
    [images addObject:img]; 
    NSLog(@"%@",getImagePath); 
    imge.image=img; 
} 

代替硬編碼的圖像文件的數量和名稱,如多米尼克建議你應該使用contentsOfDirectoryAtPath的:錯誤:獲得在該目錄中的文件列表。

NSError *error = nil; 
NSArray *imageFileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d",b]] error:&error]; 
+0

這方面的缺點是你必須硬編碼目錄中圖像的數量,但是如果他將使用'NSFileManager'的'contentsOfDirectoryAtPath:error:'方法,他可以同時獲得文件路徑和計數。 –

+0

你是對的。我會編輯我的答案。 –