Mám struct s nějaké statické proměnné, které musím používat v celé mé aplikace (nechtěl jsem použít singleton třídy, ale protože jsem potřebovat více instancí v budoucnu, ale teď mám jen jednu instanci).
Každá statická proměnná je přiřazena výchozí hodnoty, ale tyto hodnoty se změnily v průběhu životnosti aplikace. Jsem také uložit tyto změny v UserDefaults, takže by bylo přetrvávající mezi vzývání, ale já jsem stále používat tyto statické proměnné, protože nechci číst z UserDefaults pokaždé.
Teď chci, možnost resetovat všechny tyto hodnoty na jejich původní výchozí hodnoty a nemůžu přijít na to, jak to udělat správně. Můžu použít samostatný struct, která se bude konat výchozí hodnoty a pak použít func změnit hodnoty od jedné do jeho příslušné proměnné v jiných. Ale zdá se, není tak elegantní, a tam musí být lepší způsob, jak to udělat, že mi chybí.
Snažil jsem se přidat func uvnitř struct, který má následující:
func resetDefaults() {
self = DefaultStruct()
}
Kompilátor mi řekl, že nemůžu změnit sebe a je třeba, aby func mutuje. Tak jsem to udělal. Pak se ale jinde v mém kódu, v další třídě, tato funkce je již v rozsahu. Když jsem se připojit:
DefaultStruct.resetDefaults()
To mi dává jiné chyby, jako například:
Instance member 'resetDefaults' cannot be used on type 'DefaultStruct'; did you mean to use a value of this type instead?
Také, protože jsem používat statické proměnné této struct přímo, nikdy jsem inicializovat tato struct. Jinými slovy, nemám takové struct jméno, že mám přístup jinde. Nebo možná se mýlím a něco mi uniká???
Vaše pomoc bude velmi ocenil. Buď mi uniká něco velmi základního, nebo budu jen použít samostatný struct s výchozí hodnoty, jak jsem řekl dříve.
Díky!!!