2014-02-17 50 views
0

多個文件擴展名,我需要,如果文件夾包含在下面的代碼擴展字符串的文件,以提高警報面板。 「輸入」textField包含路徑字符串...無法讓它工作...感謝您的幫助。可可您在文件夾

NSString * filePath = [input stringValue]; 
NSURL *fileURL = [NSURL fileURLWithPath:filePath]; 

NSString *theFolder= [fileURL path]; 

NSFileManager * fileMan = [[NSFileManager alloc] init]; 
NSArray * files = [fileMan contentsOfDirectoryAtPath:theFolder error:nil]; 

if (files) 
{ 
    for(int index=0;index<files.count;index++) 
    { 
     NSString * file = [files objectAtIndex:index]; 


     if (!([file.pathExtension isEqualToString:@"txt"] || [file.pathExtension isEqualToString:@"rtf"] || [file.pathExtension isEqualToString:@"doc"] || [file.pathExtension isEqualToString:@"rtfd"])) { 

///alert code 
+0

你不知道該怎麼辦好警報面板或什麼是確切的問題? – Volker

+0

@Volker與警報面板沒有問題,抱歉)。問題是上面的代碼沒有正確解析相關文件夾。換句話說 - 即使相關文件夾包含任何指定的擴展名,也會顯示警告面板。我正確解析文件夾(顯然是路徑字符串的lastPathComponent)?? – Paul

回答

0

更換

NSFileManager * fileMan = [[NSFileManager alloc] init]; 

NSFileManager * fileMan = [[NSFileManager defaultManager]; 

確保

NSString *theFolder= [fileURL path]; 

爲您提供了一個文件夾,而不是文件名!

我會建議爲小寫在比較所有字符串。

聲明一個布爾變量外的for循環像

BOOL otherFiles = NO; 
if (files) { 
    for(int index=0;index<files.count;index++) 
    { 
     NSString * file = [files objectAtIndex:index]; 
     if (!([file.pathExtension.lowercaseString isEqualToString:@"txt"] || 
      [file.pathExtension.lowercaseString isEqualToString:@"rtf"] || 
      [file.pathExtension.lowercaseString isEqualToString:@"doc"] || 
      [file.pathExtension.lowercaseString isEqualToString:@"rtfd"]) 
     ) otherFiles = YES; 
} 
if (otherFiles) NSRunAlertPanel..... 

確保文件包含了你的期望!

+0

謝謝分配... – Paul

相關問題