2014-10-13 6 views

Antwort

17

Einige könnten dies ein wenig besser finden. Dies ist Swift 3.

var directory: ObjCBool = ObjCBool(false) 
var exists: Bool = FileManager.default.fileExists(atPath: "…", isDirectory: &directory) 

if exists && directory.boolValue { 
    // Exists. Directory. 
} else if exists { 
    // Exists. 
} 
+2

Technisch wird dies nicht gegossen, sondern initialisiert mit 'init (_ value: T)'. – Kirsteins

+0

Wenn Sie darüber nachdenken, sind Sie völlig richtig, wird dies bemerken. –

62

Das Problem ist, dass isDirectory ist UnsafeMutablePointer<ObjCBool> und nicht UnsafeMutablePointer<Bool> Sie zur Verfügung stellen. Sie können den folgenden Code verwenden:

var isDir = ObjCBool(false) 
if NSFileManager.defaultManager().fileExistsAtPath("", isDirectory: &isDir) { 

} 

if isDir.boolValue { 

} 
+0

Dies ist der Trick. Vielen Dank! –

+7

On Swift 3 Bool (isDir) funktioniert nicht für mich. isDir.boolValue funktioniert einwandfrei. Danke –

+3

Dies ist die Lösung für Swift 3 –

1

Es ist

func isDirectory(path: String) -> Bool { 
    var isDirectory: ObjCBool = false 
    NSFileManager().fileExistsAtPath(path, isDirectory: &isDirectory) 
    return Bool(isDirectory) 
} 
0

In swift3

var isDirectory:ObjCBool = true 
var exists = FileManager.default.fileExists(atPath: cachePath, isDirectory: &isDirectory) 
+0

Hallo und willkommen bei StackOveflow. Bitte fügen Sie Ihrer Antwort einige Erklärungen hinzu, da reine Code-Antworten nicht ideal sind. – Chaithanya

0

Sie können den folgenden Code als Erweiterung verwenden. Um zu überprüfen, ob ein Verzeichnis vorhanden ist oder nicht, in Swift 4.0

import Foundation 

extension FileManager { 

    func directoryExists (atPath path: String) -> Bool { 
     var directoryExists = ObjCBool.init(false) 
     let fileExists = FileManager.default.fileExists(atPath: path, isDirectory: &directoryExists) 

     return fileExists && directoryExists.boolValue 
    } 
} 
Verwandte Themen