2012-10-26 113 views
1

我在一個文件夾中有一堆客戶圖像(名爲[code] .png),但有些客戶沒有圖像,所以我想顯示一個佔位符。NSFileManager fileExistsAtPath只適用於絕對路徑

我正在檢查圖像[code] .png的存在,如果存在,我顯示那個,否則我顯示佔位符。但是,fileExistsAtPath 總是返回false,即使對於存在的圖像。

NSFileManager *m = [NSFileManager defaultManager]; 
NSString *imagePath = [NSString stringWithFormat:@"%@.png",code]; 
if ([m fileExistsAtPath:imagePath]) 
    self.detailViewController.imageFrame.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png",code]]; 
else 
    self.detailViewController.imageFrame.image = [UIImage imageNamed:@"customer_large.png"]; 

這總是顯示customer_large。

但是,如果我改變的ImagePath到的絕對路徑圖像並留下所顯示的圖像作爲相對文件名,布爾正常工作,和圖像顯示的作品以及

這證明我檢查的文件名確實存在,作爲圖像顯示器,但我明顯缺少fileExistsAtPath方面的東西,因爲它當程序已被證明存在的文件返回false。

+0

在項目旁邊根我所有的類/頭,等他們的位置被設置爲「相對於集團」和它們顯示的選項下的文件名是簡單的[代碼] png格式 – Darrrrrren

回答

1

由於圖像存儲在項目,而不是文檔目錄,我根本不會使用NSFileManager。

相反,使用[UIImage imageNamed:@「IMAGE_FILENAME」]並查看它是否返回nil。如果是,則使用佔位符。

下面的代碼片段:

UIImage *possibleImage = [UIImage imageNamed:@"IMAGE_FILENAME"]; 
if (possibleImage) { 
    self.detailViewController.imageFrame.image = possibleImage; 
} else { 
    self.detailViewController.imageFrame.image = [UIImage imageNamed:@"customer_large.png"]; 
} 
+1

這是一個簡單的解決方案,並且比我現在的方法少冗長。一旦適當的時間過去,我會接受。 – Darrrrrren

0

我假設你的文件存儲在文件目錄中?如果是這樣,首先得到的路徑,文件目錄通過這樣的:

NSString *destPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
    destPath = [destPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",nameOfImage]]; 

此檢查該文件是否存在。希望這有助於:D

0

因爲它的立場imagePath是唯一真正的圖像的名稱。這給一試:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:code ofType:@"png"]; 
+0

這將工作,如果它在文檔目錄,它在項目本身。 –

+0

@Mthethew這就是我發佈的代碼是... Mashups解決方案是您如何訪問文檔目錄。 –

+0

同意,但在他正在尋找項目目錄中的東西的意見。 –