В Swift fileExistsAtPath (_ путь: String, isDirectory isDirectory: UnsafeMutablePointer <ObjCBool>) → Bool принимает только один параметр
Метод fileExistsAtPath() в приведенном ниже примере принимает только один аргумент.
if fm.fileExistsAtPath(result, isDirectory:&isDir) {
Точное сообщение об ошибке: "Дополнительный аргумент" isDirectory "в вызове".
Любая идея, что не так?
Ответы
Ответ 1
Некоторые могут найти это немного опрятным. Это 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
Проблема заключается в том, что isDirectory
есть UnsafeMutablePointer<ObjCBool>
, а не UnsafeMutablePointer<Bool>
, который вы предоставляете. Вы можете использовать следующий код:
var isDir = ObjCBool(false)
if NSFileManager.defaultManager().fileExistsAtPath("", isDirectory: &isDir) {
}
if isDir.boolValue {
}
Ответ 3
Это
func isDirectory(path: String) -> Bool {
var isDirectory: ObjCBool = false
NSFileManager().fileExistsAtPath(path, isDirectory: &isDirectory)
return Bool(isDirectory)
}
Ответ 4
В Swift3
var isDirectory:ObjCBool = true
var exists = FileManager.default.fileExists(atPath: cachePath, isDirectory: &isDirectory)
Ответ 5
Вы можете использовать следующий код в качестве расширения. чтобы проверить, существует ли каталог в 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
}
}