macOS - UserDefaults is different in Swift and Terminal
up vote
0
down vote
favorite
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 |
up vote
0
down vote
favorite
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 |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
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 2 days ago
Dinosaur_Weirdo
1
1
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
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
2 days ago
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
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
2 days ago
add a comment |
up vote
1
down vote
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
2 days ago
add a comment |
up vote
1
down vote
up vote
1
down vote
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 2 days ago
answered 2 days ago
Code Different
45.3k772105
45.3k772105
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.
– Dinosaur_Weirdo
2 days ago
add a comment |
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.
– Dinosaur_Weirdo
2 days ago
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.– Dinosaur_Weirdo
2 days ago
UserDefaults.standard.persistentDomain(forName: "com.apple.menuextra.clock")
still returns nil.– Dinosaur_Weirdo
2 days ago
add a comment |
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