在macOS上删除应用程序/NSUserDefaults数据

20
我来自iOS开发背景,正在使用Swift编写我的第一个MacOS应用程序。
在iOS中,如果我想删除应用程序的NSUserdefaults,我会长按设备上的应用程序图标并将其删除。
然而,在MacOS上,我没有看到我的应用程序图标在应用程序文件夹中。我错过了什么吗?
注意:我的应用程序只出现在状态栏中(我在info.plist中有“Application is agent(...)= YES”)。
2个回答

69

如果您想要删除偏好设置以进行重置,则需要使用defaults命令。MacOS使用缓存系统来管理偏好设置,已经很长时间了,Apple不推荐直接删除偏好设置文件本身。在终端中输入:

defaults delete your.app.bundle.id

这将删除文件和任何缓存的设置。

如果您希望删除整个应用程序,则取决于它是否处于沙盒中。首先按上述步骤删除首选项。

如果它是沙盒化的,则删除目录〜/Library/Containers/your.app.bundle.id

如果它没有被沙盒化,您必须逐个删除添加到路径中的任何内容,例如〜/Library/Application Support等。

在这两种情况下,您都需要删除name.app文件本身。

希望对你有所帮助!


1
谢谢,我没有意识到这已经改变,并且缓存使我感到困惑。 - Ryan Francesconi
谢谢,我没有意识到这个已经改变了,之前被缓存搞混了。 - aminbadri7
由于某种原因,我无法从终端中删除它,它显示操作不允许。但是可以手动删除它。 - undefined

3
作为一个和我一样遇到这个问题的人的附注,如果你正在开发 macOS 屏幕保护程序并将配置设置存储在 UserDefaults 中,你需要执行以下操作。
defaults delete com.apple.ScreenSaver.Engine.legacyScreenSaver

删除您的屏幕保护设置。这可能会清除安装的任何自定义屏幕保护程序的所有设置,但我找不到其他方法。


如果你特别指定了想要存储屏幕保护程序UserDefaults的位置,使用UserDefaults(suiteName: String),那么你将使用其中设置的内容...但是否则你的默认值将最终存储在...legacyScreenSaver位置。 - Brad Root

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接