macOS - UserDefaults is different in Swift and Terminal
I'm trying to access a system preference (com.apple.menuextra.clock DateFormat
specifically) from my Swift app using UserDefaults. Using terminal, defaults read com.apple.menuextra.clock
returns
{
DateFormat = "EEE MMM d h:mm:ss a";
FlashDateSeparators = 0;
IsAnalog = 0;
}
However, if I do this in my Swift app
print(UserDefaults.standard.dictionary(forKey: "com.apple.menuextra.clock"))
I get nil
.
How do I access this in Swift? If it helps, I'm only looking for DateFormat
so I know if the user prefers 12- or 24-hour time. I've tried
DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!
then finding whether or not it contains a
, but that doesn't work either.
Thanks in advance.
swift macos terminal nsuserdefaults
add a comment |
I'm trying to access a system preference (com.apple.menuextra.clock DateFormat
specifically) from my Swift app using UserDefaults. Using terminal, defaults read com.apple.menuextra.clock
returns
{
DateFormat = "EEE MMM d h:mm:ss a";
FlashDateSeparators = 0;
IsAnalog = 0;
}
However, if I do this in my Swift app
print(UserDefaults.standard.dictionary(forKey: "com.apple.menuextra.clock"))
I get nil
.
How do I access this in Swift? If it helps, I'm only looking for DateFormat
so I know if the user prefers 12- or 24-hour time. I've tried
DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!
then finding whether or not it contains a
, but that doesn't work either.
Thanks in advance.
swift macos terminal nsuserdefaults
add a comment |
I'm trying to access a system preference (com.apple.menuextra.clock DateFormat
specifically) from my Swift app using UserDefaults. Using terminal, defaults read com.apple.menuextra.clock
returns
{
DateFormat = "EEE MMM d h:mm:ss a";
FlashDateSeparators = 0;
IsAnalog = 0;
}
However, if I do this in my Swift app
print(UserDefaults.standard.dictionary(forKey: "com.apple.menuextra.clock"))
I get nil
.
How do I access this in Swift? If it helps, I'm only looking for DateFormat
so I know if the user prefers 12- or 24-hour time. I've tried
DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!
then finding whether or not it contains a
, but that doesn't work either.
Thanks in advance.
swift macos terminal nsuserdefaults
I'm trying to access a system preference (com.apple.menuextra.clock DateFormat
specifically) from my Swift app using UserDefaults. Using terminal, defaults read com.apple.menuextra.clock
returns
{
DateFormat = "EEE MMM d h:mm:ss a";
FlashDateSeparators = 0;
IsAnalog = 0;
}
However, if I do this in my Swift app
print(UserDefaults.standard.dictionary(forKey: "com.apple.menuextra.clock"))
I get nil
.
How do I access this in Swift? If it helps, I'm only looking for DateFormat
so I know if the user prefers 12- or 24-hour time. I've tried
DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!
then finding whether or not it contains a
, but that doesn't work either.
Thanks in advance.
swift macos terminal nsuserdefaults
swift macos terminal nsuserdefaults
asked Nov 19 '18 at 11:29
Dinosaur_WeirdoDinosaur_Weirdo
13
13
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You were not searching in the right domain. When you call dictionary(forKey:)
, bool(forKey:)
, integer(forKey:)
, etc, you are searching through a hierarchy of domains:
NSArgumentDomain
: the arguments that are passed to your app when it starts.- Application domain: the keys that you defined in your app.
NSGlobalDomain
: system-level preferences.- Languages: system-level preferences that are dictated by the user's choice of language.
NSRegistrationDomain
: temporary keys that your app define. Must be re-registered every time your app launches. If you want it to stick, use the Application Domain.
com.apple.menuextra.clock
is not a key in the hierarchy above. It's a domain by itself (think of it as a separate app with its own preferences). Use this instead:
if let dict = UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock") {
print(dict)
}
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.
– Dinosaur_Weirdo
Nov 20 '18 at 1:48
add a comment |
To anyone else who has this question in the future: I fixed it by turning off App Sandbox.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53373683%2fmacos-userdefaults-is-different-in-swift-and-terminal%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You were not searching in the right domain. When you call dictionary(forKey:)
, bool(forKey:)
, integer(forKey:)
, etc, you are searching through a hierarchy of domains:
NSArgumentDomain
: the arguments that are passed to your app when it starts.- Application domain: the keys that you defined in your app.
NSGlobalDomain
: system-level preferences.- Languages: system-level preferences that are dictated by the user's choice of language.
NSRegistrationDomain
: temporary keys that your app define. Must be re-registered every time your app launches. If you want it to stick, use the Application Domain.
com.apple.menuextra.clock
is not a key in the hierarchy above. It's a domain by itself (think of it as a separate app with its own preferences). Use this instead:
if let dict = UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock") {
print(dict)
}
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.
– Dinosaur_Weirdo
Nov 20 '18 at 1:48
add a comment |
You were not searching in the right domain. When you call dictionary(forKey:)
, bool(forKey:)
, integer(forKey:)
, etc, you are searching through a hierarchy of domains:
NSArgumentDomain
: the arguments that are passed to your app when it starts.- Application domain: the keys that you defined in your app.
NSGlobalDomain
: system-level preferences.- Languages: system-level preferences that are dictated by the user's choice of language.
NSRegistrationDomain
: temporary keys that your app define. Must be re-registered every time your app launches. If you want it to stick, use the Application Domain.
com.apple.menuextra.clock
is not a key in the hierarchy above. It's a domain by itself (think of it as a separate app with its own preferences). Use this instead:
if let dict = UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock") {
print(dict)
}
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.
– Dinosaur_Weirdo
Nov 20 '18 at 1:48
add a comment |
You were not searching in the right domain. When you call dictionary(forKey:)
, bool(forKey:)
, integer(forKey:)
, etc, you are searching through a hierarchy of domains:
NSArgumentDomain
: the arguments that are passed to your app when it starts.- Application domain: the keys that you defined in your app.
NSGlobalDomain
: system-level preferences.- Languages: system-level preferences that are dictated by the user's choice of language.
NSRegistrationDomain
: temporary keys that your app define. Must be re-registered every time your app launches. If you want it to stick, use the Application Domain.
com.apple.menuextra.clock
is not a key in the hierarchy above. It's a domain by itself (think of it as a separate app with its own preferences). Use this instead:
if let dict = UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock") {
print(dict)
}
You were not searching in the right domain. When you call dictionary(forKey:)
, bool(forKey:)
, integer(forKey:)
, etc, you are searching through a hierarchy of domains:
NSArgumentDomain
: the arguments that are passed to your app when it starts.- Application domain: the keys that you defined in your app.
NSGlobalDomain
: system-level preferences.- Languages: system-level preferences that are dictated by the user's choice of language.
NSRegistrationDomain
: temporary keys that your app define. Must be re-registered every time your app launches. If you want it to stick, use the Application Domain.
com.apple.menuextra.clock
is not a key in the hierarchy above. It's a domain by itself (think of it as a separate app with its own preferences). Use this instead:
if let dict = UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock") {
print(dict)
}
edited Nov 19 '18 at 22:13
answered Nov 19 '18 at 13:46
Code DifferentCode Different
47.6k776110
47.6k776110
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.
– Dinosaur_Weirdo
Nov 20 '18 at 1:48
add a comment |
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.
– Dinosaur_Weirdo
Nov 20 '18 at 1:48
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.– Dinosaur_Weirdo
Nov 20 '18 at 1:48
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.– Dinosaur_Weirdo
Nov 20 '18 at 1:48
add a comment |
To anyone else who has this question in the future: I fixed it by turning off App Sandbox.
add a comment |
To anyone else who has this question in the future: I fixed it by turning off App Sandbox.
add a comment |
To anyone else who has this question in the future: I fixed it by turning off App Sandbox.
To anyone else who has this question in the future: I fixed it by turning off App Sandbox.
answered Dec 3 '18 at 9:03
Dinosaur_WeirdoDinosaur_Weirdo
13
13
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53373683%2fmacos-userdefaults-is-different-in-swift-and-terminal%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown