2010-08-03 49 views
1

我試圖創建一個文件夾的內容的NSString的數組,我已經拖入我的項目...但是當我計算數組中的項目後,它總是回來0;文件夾內文件名的NSString數組?

所以,我在我的項目文件夾看起來像這樣

-Cards 
    -Colors 
    Blue.png 
    Green.png 
    Orange.png 
    Yellow.png 
    Purple.png 
    Black.png 

而且我的代碼,它試圖獲取文件(顏色png格式)的這份名單是

NSError *error = nil; 
NSString *pathString = [[NSString alloc] init]; 
pathString = [[NSString alloc] initWithString:@"/Cards/Colors/"]; 
NSArray *fileList = [[NSArray alloc] init]; 
fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathString error: &error]; 
[pathString release]; 
NSLog(@"%@", error); 
// this is always 0 
NSLog(@"file list has %i items", [fileList count]); 

的NSError我得到的是

Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. (Cocoa error 260.)" UserInfo=0x596db00 {NSUserStringVariant=(
    Folder 
), NSFilePath=/Cards/Color/, NSUnderlyingError=0x5925ef0 "The operation couldn’t be completed. No such file or directory"} 

任何想法我要去哪裏錯?

回答

6

您正在初始化pathString到絕對路徑/Cards/Colors/。此路徑是一個系統範圍的路徑,所以在iPhone上,遠遠超出了您的應用程序的沙箱。

試試這個:

NSString *pathString = [[NSBundle mainBundle] pathForResource:@"Cards/Colors" ofType:nil]; 
NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathString error: &error]; 

(請注意,你有你的代碼中的問題的方式,你分配/初始化fileList,然後立即將其分配給它的contentsOfDirectoryAtPath:error:結果泄漏的對象這是。一個bug。)

+0

謝謝,第一行後的pathString爲空,並且因爲這樣我得到了一個***終止應用程序,由於未捕獲的異常'NSInvalidArgumentException'在下一行。我想知道我是否正確添加文件夾..? – cannyboy 2010-08-03 20:10:40

+0

可能是這樣。我不認爲Xcode組自動成爲捆綁中的一個目錄。也可能是'pathForResource:ofType:'不適用於目錄。在這種情況下,使用' - [NSBundle bundlePath]'獲取包的根目錄,然後使用' - [NSString stringByAppendingPathComponent:]'到達你的子目錄。 – 2010-08-04 13:59:31

相關問題