У меня есть структура с некоторыми статическими переменными, которые мне нужно использовать во всем моем приложении (я еще не использовал одноэлементный класс, потому что в будущем мне может понадобиться несколько экземпляров, но сейчас у меня есть только один экземпляр).
Каждой статической переменной присваивается значение по умолчанию, но эти значения изменяются в течение всего срока службы приложения. Я также сохраняю эти изменения в действиях пользователя, чтобы они сохранялись между вызовами, но я все еще использую эти статические переменные, потому что не хочу каждый раз читать из действий пользователя.
Теперь мне нужна возможность сбросить все эти значения до их первоначальных значений по умолчанию, и я не могу понять, как это сделать правильно. Я могу использовать отдельную структуру, которая будет содержать значения по умолчанию, а затем использовать функцию для изменения значений с одного на соответствующую переменную в другом. Но это кажется не таким элегантным, и должен быть более приятный способ сделать это, которого мне не хватает.
Я попытался добавить функцию внутри структуры, которая выполняет следующее:
func resetDefaults() {
self = DefaultStruct()
}
Компилятор сказал мне, что я не могу изменить себя и должен изменить функцию. Так я и сделал. Но затем в другом месте моего кода, в другом классе, эта функция больше не входит в область видимости. Если я добавлю:
DefaultStruct.resetDefaults()
Это дает мне другие ошибки, такие как:
Instance member 'resetDefaults' cannot be used on type 'DefaultStruct'; did you mean to use a value of this type instead?
Кроме того, поскольку я напрямую использую статические переменные этой структуры, я никогда не инициализировал эту структуру. Другими словами, у меня нет такой структуры по имени, к которой я мог бы получить доступ в другом месте. Или, может быть, я здесь ошибаюсь и что-то упускаю???
Ваша помощь была бы очень признательна. Либо мне не хватает чего-то очень простого, либо я просто буду использовать отдельную структуру со значениями по умолчанию, как я уже говорил ранее.
Спасибо!