在Swift中,fileExistsAtPath(_ path:String,isDirectory isDirectory:UnsafeMutablePointer ) – > Bool仅接受单个参数

以下示例中的方法fileExistsAtPath()仅接受单个参数。

if fm.fileExistsAtPath(result, isDirectory:&isDir) { 

确切的错误消息是:“调用中的额外参数’isDirectory’。

知道什么是错的吗?

有些人可能觉得这有点整洁。 这是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. } 

问题是isDirectoryUnsafeMutablePointer而不是你提供的UnsafeMutablePointer 。 您可以使用以下代码:

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

它是

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

在Swift3中

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

您可以使用以下代码作为扩展名。 检查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 } }