CommandLineToolkit
37 строк · 1.1 Кб
1import Foundation
2import PlistLib
3
4public final class SystemDefaults: Defaults {
5private let userDefaults: UserDefaults
6
7public struct CannotCreateUserDefaultsError: CustomStringConvertible, Error {
8let suiteName: String
9public var description: String {
10"Не могу создать user defaults для набора \(suiteName)"
11}
12}
13
14public init(
15suiteName: String
16) throws {
17guard let userDefaults = UserDefaults(suiteName: suiteName) else {
18throw CannotCreateUserDefaultsError(suiteName: suiteName)
19}
20self.userDefaults = userDefaults
21}
22
23public func entryForKey(_ key: String) throws -> PlistEntry? {
24if let object = userDefaults.object(forKey: key) {
25return try PlistEntry.create(fromAny: object)
26}
27return nil
28}
29
30public func set(entry: PlistEntry?, key: String) {
31userDefaults.set(entry?.toPlistObject(), forKey: key)
32}
33
34public func removeEntryForKey(_ key: String) {
35userDefaults.removeObject(forKey: key)
36}
37}
38