Ich versuche zu verstehen, wie man die Funktion fileExistsAtPath:isDirectory:
mit Swift benutzt, aber ich verliere mich völlig.
Dies ist mein Codebeispiel:
var b:CMutablePointer<ObjCBool>?
if (fileManager.fileExistsAtPath(fullPath, isDirectory:b! )){
// how can I use the "b" variable?!
fileManager.createDirectoryAtURL(dirURL, withIntermediateDirectories: false, attributes: nil, error: nil)
}
Ich kann nicht verstehen, wie ich auf den Wert für den b
MutablePointer zugreifen kann. Was ist, wenn ich wissen möchte, ob es auf YES
oder eingestellt ist NO
?
Versucht, die andere Antwort zu verbessern, um die Verwendung zu vereinfachen.
enum Filestatus { case isFile case isDir case isNot } extension URL { var filestatus: Filestatus { get { let filestatus: Filestatus var isDir: ObjCBool = false if FileManager.default.fileExists(atPath: self.path, isDirectory: &isDir) { if isDir.boolValue { // file exists and is a directory filestatus = .isDir } else { // file exists and is not a directory filestatus = .isFile } } else { // file does not exist filestatus = .isNot } return filestatus } } }
quelle
Nur um die Basen zu überlasten. Hier ist meine, die eine URL nimmt
extension FileManager { func directoryExists(atUrl url: URL) -> Bool { var isDirectory: ObjCBool = false let exists = self.fileExists(atPath: url.path, isDirectory:&isDirectory) return exists && isDirectory.boolValue } }
quelle
Ich habe gerade eine einfache Erweiterung zu FileManager hinzugefügt, um dies ein bisschen übersichtlicher zu gestalten. Könnte hilfreich sein?
extension FileManager { func directoryExists(_ atPath: String) -> Bool { var isDirectory: ObjCBool = false let exists = FileManager.default.fileExists(atPath: atPath, isDirectory:&isDirectory) return exists && isDirectory.boolValue } }
quelle