Uygulamam boyunca kullanmam gereken bazı statik değişkenlere sahip bir yapıya sahibim (gelecekte birden çok örneğe ihtiyacım olabileceğinden henüz bir singleton sınıfı kullanmadım, ancak şu anda sadece bu tek örneğe sahibim).
Her statik değişkene varsayılan bir değer atanır, ancak bu değerler uygulamanın ömrü boyunca değiştirilir. Bu değişiklikleri userdefaults'ta da saklıyorum, böylece çağrılar arasında kalıcı olacaklar, ancak yine de bu statik değişkenleri kullanıyorum çünkü her seferinde userdefaults'tan okumak istemiyorum.
Şimdi tüm bu değerleri orijinal varsayılan değerlerine sıfırlama seçeneğini istiyorum ve bunu nasıl doğru yapacağımı anlayamıyorum. Varsayılan değerleri tutacak ayrı bir yapı kullanabilir ve değerleri birinden diğerindeki ilgili değişkene değiştirmek için bir işlev kullanabilirim. Ama o kadar zarif görünmüyor ve bunu yapmak için kaçırdığım daha güzel bir yol olmalı.
Aşağıdakileri yapan yapının içine bir func eklemeye çalıştım:
func resetDefaults() {
self = DefaultStruct()
}
Derleyici bana kendimi değiştiremeyeceğimi ve işlevi mutasyona uğratmam gerektiğini söyledi. Ben de öyle yaptım. Ama sonra kodumun başka bir yerinde, başka bir sınıfta, bu işlev artık kapsamda değil. Eğer eklersem:
DefaultStruct.resetDefaults()
Bana başka hatalar veriyor, örneğin:
Instance member 'resetDefaults' cannot be used on type 'DefaultStruct'; did you mean to use a value of this type instead?
Ayrıca, bu yapının statik değişkenlerini doğrudan kullandığım için, bu yapıyı hiçbir zaman başlatmadım. Başka bir deyişle, başka bir yere erişebileceğim bir yapıya sahip değilim. Ya da belki burada yanılıyorum ve bir şey mi kaçırıyorum???
Yardımınız çok takdir edilecektir. Ya çok temel bir şeyi kaçırıyorum ya da daha önce söylediğim gibi varsayılan değerlerle ayrı bir yapı kullanacağım.
Teşekkürler!