Mám struct s niektoré statické premenné, ktoré potrebujem na použitie v celej mojej aplikácie (nechcel som použiť singleton triedy, ale preto som možno potrebné viaceré inštancie v budúcnosti, ale teraz mám len túto jednu inštanciu).
Každý statická premenná je pridelené predvolenú hodnotu, ale tieto hodnoty dostať meniť počas celého trvania aplikácie. Som tiež ukladať tieto zmeny v UserDefaults tak by byť vytrvalý medzi vyvolaniami, ale ja som stále používať tieto statické premenné, pretože nechcem čítať z UserDefaults každý čas.
Teraz chcem, možnosť obnoviť všetky tieto hodnoty na ich pôvodné hodnoty a nemôžem prísť na to, ako to urobiť správne. Môžem použiť samostatný struct, ktorá sa bude držať predvolené hodnoty a potom použiť func na zmenu hodnôt z jednej do príslušnej premennej v iných. Ale zdá sa, že nie je tak elegantné a tam musí byť krajší spôsob, ako to urobiť, aby som sa spamätala.
Snažil som sa pridať func vnútri struct, ktoré sa takto:
func resetDefaults() {
self = DefaultStruct()
}
Kompilátor mi povedal, že nemôžem zmeniť seba a potrebujú, aby func mutating. Tak som to urobil. Ale potom inde v mojom kóde, v inej triedy, táto funkcia už nie je v pôsobnosti. Ak by som doplniť:
DefaultStruct.resetDefaults()
To mi dáva iné chyby, ako napr.:
Instance member 'resetDefaults' cannot be used on type 'DefaultStruct'; did you mean to use a value of this type instead?
Tiež, pretože som používať statické premenné tohto struct priamo, nikdy som inicializovaný tento struct. Inými slovami, nemám taký struct podľa názvu, že som si k inde. Alebo možno som zle a ja som niečo chýba???
Vaša pomoc bude veľmi ocenil. Buď som niečo chýba veľmi základné, alebo som si len použite samostatný struct s predvolené hodnoty ako som povedal predtým.
Vďaka!