Как получить путь к домашнему каталогу пользователя (Users / «имя пользователя»), не зная имени пользователя в Swift3

swift swift3

5617 просмотра

3 ответа

Я делаю func, который редактирует текстовый файл в Users / johnDoe Dir.

let filename = "random.txt"
let filePath = "/Users/johnDoe"
let replacementText = "random bits of text"
do {

 try replacementText.write(toFile: filePath, atomically: true, encoding: .utf8)

}catch let error as NSError {
print(error: + error.localizedDescription)
}

Но я хочу иметь универсальный путь. Что-то вроде

let fileManager = FileManager.default
    let downloadsURL =  FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! as NSURL
    let downloadsPath = downloadsURL.path

но для папки JohnDoe. Я не смог найти никакой документации о том, как это сделать. Самая близкая вещь, которую я мог найти упомянутой, используя NSHomeDirectory (). И я не уверен, как использовать это в этом контексте.

когда я пытаюсь добавить это как ...

let fileManager = FileManager.default
    let downloadsURL =  FileManager.default.urls(for: NSHomeDirectory, in: .userDomainMask).first! as NSURL
    let downloadsPath = downloadsURL.path

Я получаю ошибку:

"Невозможно преобразовать значение типа 'String' в ожидаемый тип аргумента 'FileManager.SearchPathDirectory'"

Я пробовал это .NSHomeDirectory, .NSHomeDirectory (), NShomeDirectory, NShomeDirectory ()

Автор: JonnyTombstone Источник Размещён: 12.11.2019 09:03

Ответы (3)


18 плюса

Решение

Вы можете использовать свойство FileManager homeDirectoryForCurrentUser

let homeDirURL = FileManager.default.homeDirectoryForCurrentUser

Если вам это нужно для работы с более ранними версиями ОС, чем 10.12, вы можете использовать

let homeDirURL = URL(fileURLWithPath: NSHomeDirectory())

print(homeDirURL.path)
Автор: Leo Dabus Размещён: 29.12.2016 05:26

3 плюса

Должен быть более простой способ, но в худшем случае это должно сработать:

let filePath = NSString(string: "~").expandingTildeInPath
Автор: Phillip Mills Размещён: 29.12.2016 04:17

-1 плюса

Может быть

FileManager.homeDirectoryForCurrentUser: URL

Это перечислено как "бета" для 10.12, все же.

Автор: Mike Размещён: 29.12.2016 05:29
Вопросы из категории :
32x32