Am o struct cu unele variabile statice de care am nevoie pentru a utiliza de-a lungul aplicația mea (nu am folosit-o clasa singleton încă pentru că am nevoie de mai multe instanțe, în viitor, dar acum am doar acest singur exemplu).
Fiecare variabilă statică este atribuit o valoare implicită, dar aceste valori s-a schimbat pe toată durata de viață a aplicației. Am stoca, de asemenea, aceste schimbări în UserDefaults astfel încât acestea să fie persistente între invocații, dar eu încă mai folosesc aceste variabile statice pentru că nu vreau să citesc din UserDefaults de fiecare dată.
Acum vreau opțiunea de a reseta toate aceste valorile lor inițiale valorile implicite și eu nu pot da seama cum de a face acest lucru corect. Pot folosi separat struct care va deține valorile implicite și apoi utilizați o func pentru a schimba valorile de la unul la respectiva variabilă în cealaltă. Dar se pare că nu atât de elegant și trebuie să existe o modalitate mai buna de a face acest lucru care îmi lipsește.
Am încercat pentru a adăuga o func interiorul struct care face următoarele:
func resetDefaults() {
self = DefaultStruct()
}
Compilatorul mi-a spus că nu se poate schimba de sine și au nevoie pentru a face func mutant. Așa am și făcut. Dar apoi în altă parte în codul meu, într-o altă clasă, această funcție nu mai este în domeniul de aplicare. Dacă am adăuga:
DefaultStruct.resetDefaults()
Imi da alte erori, cum ar fi:
Instance member 'resetDefaults' cannot be used on type 'DefaultStruct'; did you mean to use a value of this type instead?
De asemenea, pentru că am folosi variabilele statice de acest struct direct, n-am inițializat acest struct. Cu alte cuvinte, nu au astfel o struct de nume care pot accesa în altă parte. Sau poate am greșit și am pierdut ceva???
De ajutorul tau va fi foarte apreciat. Ori eu sunt lipsește ceva foarte de bază, sau o voi folosi separat struct cu valorile implicite după cum am spus înainte.
Multumesc!!!