Подтвердить что ты не робот

В Swift fileExistsAtPath (_ путь: String, isDirectory isDirectory: UnsafeMutablePointer <ObjCBool>) &#8594; Bool принимает только один параметр

Метод fileExistsAtPath() в приведенном ниже примере принимает только один аргумент.

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

Точное сообщение об ошибке: "Дополнительный аргумент" isDirectory "в вызове".

Любая идея, что не так?

4b9b3361

Ответ 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
    }
}