2012-07-18 4 views
9

Je veux laisser l'utilisateur choisir un répertoire pour enregistrer un fichier. mais comment s'assurer que l'url est un répertoire pas un fichier?NSOpenPanel choisir un répertoire (pas un fichier)

NSOpenPanel* panel = [NSOpenPanel openPanel]; 
[panel setCanChooseDirectories:YES]; 
[panel setCanCreateDirectories:YES]; 

[panel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result){ 
    if (result == NSFileHandlingPanelOKButton) { 
     NSArray* urls = [panel URLs]; 
     for (NSURL *url in urls) { 
      //here how to judge the url is a directory or a file 
     } 
    } 
}]; 

Répondre

7
// First, check if the URL is a file URL, as opposed to a web address, etc. 
if (url.isFileURL) { 
    BOOL isDir = NO; 
    // Verify that the file exists 
    // and is indeed a directory (isDirectory is an out parameter) 
    if ([[NSFileManager defaultManager] fileExistsAtPath: url.path isDirectory: &isDir] 
     && isDir) { 
    // Here you can be certain the url exists and is a directory 
    } 
} 
15

Mise à jour pour toute personne lisant à l'avenir:

Swift, vérifier si on peut éviter le chemin choisi est un fichier en utilisant

panel.canChooseFiles = false 
+0

Techniquement qui fonctionne pour objectif -C aussi, bien que j'utilise 'NO' au lieu de' false'. –

+0

Oui, c'est vrai, mais dans Swift, vous devriez utiliser false. –

Questions connexes