2011-07-14 159 views
0

我試圖創建一個名爲/coffeeShops.I我/一個文件夾在我的應用程序下面的代碼中:didFinishLaunchingWithOptions爲什麼我無法使用此代碼創建文件夾?

NSArray *dirPaths; 
    NSString *docsDir; 

    NSFileManager *manager; 
    NSError *error; 

manager =[NSFileManager defaultManager]; 


dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
               NSUserDomainMask, YES); 

docsDir = [dirPaths objectAtIndex:0]; 
NSString *coffeeString=[NSString stringWithFormat:@"@/@",docsDir,@"coffeeShops"]; 

if (![manager fileExistsAtPath:coffeeString isDirectory:YES]) 
{ 
    [manager createDirectoryAtPath:coffeeString withIntermediateDirectories:YES attributes:nil error:&error]; 


    NSLog(@"Creating folder"); 
    if(error) NSLog(error); 
} 
else NSLog(@"Folder for coffee pics exists"); 

我在

if (![manager fileExistsAtPath:coffeeString isDirectory:YES]) 

得到一個EXC_BAD_ACCESS我在做什麼錯了?

+0

doe格式字符串看起來真像「@」@/@「'? – 2011-07-14 16:04:11

回答

3

isDirectory旨在告訴你指定的文件是不是一個目錄,而不是讓你說'只有目錄請'。

試試這個:

BOOL isDirectory = NO; 
BOOL exists = [manager fileExistsAtPath:coffeeString isDirectory:&isdirectory]; 
if (NO == exists || NO == isDirectory) { 

@Evan確實有一個答案是,在有一些有用的點,但它的消失:(

有這麼建立你的路徑上的NSString的方法 - 它叫做stringByAppendingPathComponent。我認爲你應該這樣使用它:

NSString *coffeeString=[docsDir stringByAppendingPathComponent:@"coffeeShops"]; 
相關問題