2016-12-29 22 views
2

我正在製作一個func來編輯Users/johnDoe目錄中的文本文件。如何在不知道用戶名的情況下獲取用戶主目錄路徑(用戶名/「用戶名」)Swift3

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 

我得到一個錯誤:

"Cannot Convert value of type 'String' to expected argument type 'FileManager.SearchPathDirectory'"

我已經試過了.NSHomeDirectory,.NSHomeDirectory(),NShomeDirectory,NShomeDirectory()

回答

5

您可以使用文件管理器屬性homeDirectoryForCurrentUser

let homeDirURL = FileManager.default.homeDirectoryForCurrentUser 

如果你需要它與早期的操作系統版本低於10.12工作,你可以使用

let homeDirURL = URL(fileURLWithPath: NSHomeDirectory()) 

print(homeDirURL.path) 
+0

你先生......我可以吻你現在寫=)。非常簡單,像魅力一樣工作。我想我正試圖想想它。 – JonnyTombstone

+0

不客氣 –

1

應該有一個更簡單的方法,但是 - 在最壞的情況 - 這應該工作:

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

也許

FileManager.homeDirectoryForCurrentUser: URL 

雖然它被列爲10.12的「測試版」。

+0

是的,但它只適用於10.12+我需要它與10.9一起工作我應該在我的博文中提到過對不起 – JonnyTombstone

相關問題