如何在不知道Swift3中的用户名的情况下获取用户主目录路径(Users /"用户名")

时间:2016-12-29 15:56:47

标签: swift swift3

我正在编写一个func来编辑Users / johnDoe目录中的文本文件。

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

我收到错误:

  

"无法转换类型'字符串'的值预期参数类型' FileManager.SearchPathDirectory'"

我已经尝试过了.NSHomeDirectory,.NSHomeDirectory(),NShomeDirectory,NShomeDirectory()

3 个答案:

答案 0 :(得分:17)

您可以使用FileManager属性homeDirectoryForCurrentUser

let homeDirURL = FileManager.default.homeDirectoryForCurrentUser

如果您需要它使用早于10.12的操作系统版本,您可以使用

let homeDirURL = URL(fileURLWithPath: NSHomeDirectory())
print(homeDirURL.path)

答案 1 :(得分:2)

应该有一种更简单的方法,但是 - 最糟糕的是 - 这应该有效:

let filePath = NSString(string: "~").expandingTildeInPath

答案 2 :(得分:-1)

也许

paste0(fixedApts, collapse = "")

它被列为" beta"但是,10.12。