OSX 10.13下Bundle用户偏好及NSToolbar配置的存储位置与编辑方法
macOS 中 Bundle 用户偏好的存储位置
macOS 下应用的用户偏好存储位置分两种场景:
- 非沙盒应用:偏好文件存放在用户目录的
~/Library/Preferences/文件夹下,文件名以应用的 Bundle ID 命名,格式为<Bundle ID>.plist,比如com.example.MyApp.plist。 - 沙盒应用:出于安全隔离,偏好文件会放在容器目录内,路径为
~/Library/Containers/<Bundle ID>/Data/Library/Preferences/<Bundle ID>.plist。
此外,系统级的全局偏好(极少用到)会存放在 /Library/Preferences/ 下,同样以 Bundle ID 命名。
Xcode 9 开发的 macOS 10.13 应用中 NSToolbar 配置的存储与编辑
当你给 NSToolbar 设置 autosavesConfiguration = true 后,工具栏的自定义配置会自动保存到应用的用户偏好文件中,具体位置和应用是否沙盒化有关:
存储位置
- 沙盒应用:对应路径为
~/Library/Containers/<你的应用Bundle ID>/Data/Library/Preferences/<你的应用Bundle ID>.plist - 非沙盒应用:对应路径为
~/Library/Preferences/<你的应用Bundle ID>.plist
在偏好文件中,工具栏配置以 NSToolbar Configuration <Toolbar Identifier> 为键存储(比如你的工具栏 identifier 是 MainToolbar,键名就是 NSToolbar Configuration MainToolbar),值是包含工具栏项顺序、可见状态等信息的字典。
编辑方式
1. 手动编辑偏好文件
- 首先找到对应的
.plist文件:- 沙盒应用需要先进入
~/Library/Containers/下的对应应用目录
- 沙盒应用需要先进入
- 处理二进制 plist:默认 macOS 偏好文件是二进制格式,直接用文本编辑器打开会乱码,可通过终端命令转换为可读的 XML 格式:
编辑完成后再转回二进制格式:plutil -convert xml1 /path/to/your/app.plistplutil -convert binary1 /path/to/your/app.plist - 用 Xcode 直接打开 plist 文件更方便,它可以自动识别并展示二进制 plist 的内容,直接修改键值即可。
2. 通过代码重置/修改
如果需要在应用内重置工具栏到默认状态,或者自定义配置,可以操作 NSUserDefaults:
// 移除已保存的工具栏配置,下次启动会加载默认设置 UserDefaults.standard.removeObject(forKey: "NSToolbar Configuration MainToolbar") UserDefaults.standard.synchronize()
你也可以提前构造符合格式的字典,通过 set(_:forKey:) 方法写入自定义的工具栏配置。
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

