在 Swift 4.0 和 Xcode 9.0 中获取用户桌面路径
Get user desktop path in Swift 4.0 and Xcode 9.0
我试图获取当前用户桌面的路径,但我得到了库中另一个位置的路径(参见代码)。
Playgrounds 中的相同代码给出了正确答案。
我在早期创建的 Xcode 项目版本中使用了相同的代码,结果也很好。
测试是在 MacOS High Sierra、Xcode 版本 9.0 (9A235) 和 Swift 4.0 下完成的。
这里是使用的代码:
public func userDesktop() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.desktopDirectory, .userDomainMask, true)
let userDesktopDirectory = paths[0]
return userDesktopDirectory
}
let myPath:String = userDesktop() + "/"
print(myPath)
let userDesktopDirectory:String = NSHomeDirectory() + "/" + "Desktop/"
print(userDesktopDirectory)
/* results in Playground */
/Users/kader/Desktop/
/Users/kader/Desktop/
/* Results from a project in Xcode 9.0 */
/Users/kader/Library/Containers/com.kader.testuserpath/Data/Desktop/
/Users/kader/Library/Containers/com.kader.testuserpath/Data/Desktop/
这段代码有什么问题或者是错误?
我很好奇是否有更多人遇到同样的问题。
我注意到 Xcode 9 中的 Cocoa 应用程序模板默认打开 App Sandbox。启用此模式后,应用程序只能访问自己容器内的文件,就像 iOS 个应用程序一样。您可以在项目设置的“功能”选项卡中将其关闭。来自 Apple's documentation 的屏幕截图:
What your app can do inside a sandbox。如果您这样做是为了好玩,不想通过 Mac App Store 分发它,或者想要一个传统意义上的 "computer application",请完全关闭 sanboxing。这一直是 Mac App Store 的痛点,也是许多开发者离开应用商店的原因。
试试这个 Swift 4.0
var desktopPath = (NSSearchPathForDirectoriesInDomains(.desktopDirectory, .userDomainMask, true) as [String]).first
我试图获取当前用户桌面的路径,但我得到了库中另一个位置的路径(参见代码)。
Playgrounds 中的相同代码给出了正确答案。 我在早期创建的 Xcode 项目版本中使用了相同的代码,结果也很好。
测试是在 MacOS High Sierra、Xcode 版本 9.0 (9A235) 和 Swift 4.0 下完成的。
这里是使用的代码:
public func userDesktop() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.desktopDirectory, .userDomainMask, true)
let userDesktopDirectory = paths[0]
return userDesktopDirectory
}
let myPath:String = userDesktop() + "/"
print(myPath)
let userDesktopDirectory:String = NSHomeDirectory() + "/" + "Desktop/"
print(userDesktopDirectory)
/* results in Playground */
/Users/kader/Desktop/
/Users/kader/Desktop/
/* Results from a project in Xcode 9.0 */
/Users/kader/Library/Containers/com.kader.testuserpath/Data/Desktop/
/Users/kader/Library/Containers/com.kader.testuserpath/Data/Desktop/
这段代码有什么问题或者是错误?
我很好奇是否有更多人遇到同样的问题。
我注意到 Xcode 9 中的 Cocoa 应用程序模板默认打开 App Sandbox。启用此模式后,应用程序只能访问自己容器内的文件,就像 iOS 个应用程序一样。您可以在项目设置的“功能”选项卡中将其关闭。来自 Apple's documentation 的屏幕截图:
What your app can do inside a sandbox。如果您这样做是为了好玩,不想通过 Mac App Store 分发它,或者想要一个传统意义上的 "computer application",请完全关闭 sanboxing。这一直是 Mac App Store 的痛点,也是许多开发者离开应用商店的原因。
试试这个 Swift 4.0
var desktopPath = (NSSearchPathForDirectoriesInDomains(.desktopDirectory, .userDomainMask, true) as [String]).first