Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
macOS-UserDefault在Swift和Terminal中不同_Swift_Macos_Terminal_Nsuserdefaults - Fatal编程技术网

macOS-UserDefault在Swift和Terminal中不同

macOS-UserDefault在Swift和Terminal中不同,swift,macos,terminal,nsuserdefaults,Swift,Macos,Terminal,Nsuserdefaults,我正在尝试使用UserDefaults从我的Swift应用程序访问系统首选项(com.apple.menuextra.clock DateFormat)。使用终端时,默认读取com.apple.menuextra.clock返回 { DateFormat = "EEE MMM d h:mm:ss a"; FlashDateSeparators = 0; IsAnalog = 0; } 但是,如果我在我的Swift应用程序中执行此操作 print(UserDefault

我正在尝试使用UserDefaults从我的Swift应用程序访问系统首选项(
com.apple.menuextra.clock DateFormat
)。使用终端时,
默认读取com.apple.menuextra.clock
返回

{
    DateFormat = "EEE MMM d  h:mm:ss a";
    FlashDateSeparators = 0;
    IsAnalog = 0;
}
但是,如果我在我的Swift应用程序中执行此操作

print(UserDefaults.standard.dictionary(forKey: "com.apple.menuextra.clock"))
我得到
nil

如何在Swift中访问此文件?如果有帮助的话,我只查找
DateFormat
,这样我就知道用户是喜欢12小时还是24小时。我试过了

DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!
然后查找它是否包含
a
,但这也不起作用


提前感谢。

您没有在正确的域中搜索。当您调用
字典(forKey:)
bool(forKey:)
整数(forKey:)
等时,您正在搜索:

  • :应用程序启动时传递给应用程序的参数
  • 应用程序域:您在应用程序中定义的密钥
  • :系统级首选项
  • 语言:由用户选择的语言决定的系统级首选项
  • :应用程序定义的临时密钥。每次应用启动时都必须重新注册。如果希望它保持不变,请使用应用程序域
com.apple.menuextra.clock
不是上面层次结构中的键。它本身就是一个域(可以将其视为一个具有自己偏好的独立应用程序)。改用这个:

if let dict = UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock") {
    print(dict)
}

对于将来遇到此问题的任何人:我通过关闭应用程序沙盒解决了此问题。

UserDefaults.standard.persistentDomain(forName:“com.apple.menuextra.clock”)
仍然返回零。任何想知道此问题答案的人。。。您将需要UserDefaults.standard.persistentDomain和沙箱来查找此问题的答案。。。您将需要UserDefaults.standard.persistentDomain和沙箱关闭