We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
import Foundation print("User Defaults") #if os(macOS) print("macOS") #elseif os(Linux) print("Linux") #endif // Keys struct MyDefaultsKeys { static let aSampleString = "aSampleStringDefault" static let aSampleNumber = "aSampleNumberDefault" static let aSampleDate = "aSampleNumberDate" } // Get singleton let defaults = UserDefaults.standard // At start, must register factory defaults. let factoryDefaults = [ MyDefaultsKeys.aSampleString : "Hello World!", MyDefaultsKeys.aSampleNumber : 42.0, MyDefaultsKeys.aSampleDate : Date.distantPast, ] as [String : Any] defaults.register(defaults: factoryDefaults) // Read let aString = defaults.string(forKey: MyDefaultsKeys.aSampleString) print("aString: \(aString ?? "NO VALUE FOR \(MyDefaultsKeys.aSampleString) IN DEFAULTS")") let aNumber = defaults.double(forKey: MyDefaultsKeys.aSampleNumber) print("aNumber: \(aNumber)") if let aDate = defaults.object(forKey: MyDefaultsKeys.aSampleDate) as? Date { print("aDate: \(aDate)") } else { print("NO VALUE FOR \(MyDefaultsKeys.aSampleDate) IN DEFAULTS") } // Write defaults.set("I have changed!", forKey: MyDefaultsKeys.aSampleString) defaults.set(1234567, forKey: MyDefaultsKeys.aSampleNumber) defaults.set(Date(), forKey: MyDefaultsKeys.aSampleDate)
User Defaults macOS aString: Hello World! aNumber: 42.0 aDate: 0001-01-01 12:00:00 am +0000 Program ended with exit code: 0
User Defaults macOS aString: I have changed! aNumber: 1234567.0 aDate: 2023-10-29 7:34:56 am +0000 Program ended with exit code: 0
Build complete! (2.39s) User Defaults Linux aString: Hello World! aNumber: 42.0 aDate: 0000-12-30 00:00:00 +0000
Build complete! (0.45s) User Defaults Linux aString: Hello World! aNumber: 42.0 aDate: 0000-12-30 00:00:00 +0000
The text was updated successfully, but these errors were encountered:
It turns-out that the issue is that synchronise() is not automatic on Linux. The user must manually call synchronize().
synchronise()
synchronize()
e.g. the sample code above behaves correctly if you alter the last section to this:
// Write defaults.set("I have changed!", forKey: MyDefaultsKeys.aSampleString) defaults.set(1234567, forKey: MyDefaultsKeys.aSampleNumber) defaults.set(Date(), forKey: MyDefaultsKeys.aSampleDate) defaults.synchronize()
Sorry, something went wrong.
No branches or pull requests
Sample code:
Output:
macOS:
First Run
Second Run
Linux
First Run
Second Run
The text was updated successfully, but these errors were encountered: