У меня есть служба настроек в моем проекте Swift, который определяет переменные для всех параметров, доступных в моем приложении. Для того, чтобы получить доступ к NSUserDefaults только тогда, когда это абсолютно необходимо (для того, чтобы избежать несущественных задержек), я использую переменные кэша для этих параметров:Как украсить «шаблон» кеша в Swift?
class SettingsService {
struct UserDefaults {
static let Setting1 = "Setting1"
}
private var setting1Cache : Bool?
var setting1 : Bool {
get {
if let value = setting1Cache {
return value
}
let value = NSUserDefaults.standardUserDefaults().boolForKey(UserDefaults.Setting1)
setting1Cache = value
return value
}
set {
setting1Cache = newValue
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: UserDefaults.Setting1)
}
}
}
Хотя код должен работать, класс скоро станет действительно раздутой, когда увеличивается количество доступных настроек. Есть ли способ сделать код значительно более кратким, помимо определения вспомогательной функции для первых 4 строк геттера?
Вот некоторые интересные подходы: [NSUserDefaults в Swift - осуществление безопасности типа] (http://stackoverflow.com/вопросы/28136015/NSUserDefaults-в-скор-реализующей-типа-безопасности). –