🍁
Swift: SandBoxアプリでHomeDirectoryを取得
SandBoxアプリだとNSHomeDirectory()
では本来のホームディレクトリのパスが取得できない。
代わりにgetpwuid(getuid())
を使うと取得できる。
extension FileManager {
static var homeDirectoryURL: URL? {
guard let pw = getpwuid(getuid()), let home = pw.pointee.pw_dir else { return nil }
let homePath = self.default.string(withFileSystemRepresentation: home,
length: strlen(home))
return URL(fileURLWithPath: homePath)
}
}
let home = FileManager.homeDirectoryURL
同様の結論に至っている記事
App Sandboxの中のmacOSアプリから本当のホームディレクトリを知る
Discussion
実は
で簡単にとれることがわかった。